2010-08-14 12 views
0

app Rails3 avec Rspec2 et concombreLe concombre ne peut pas trouver les itinéraires? Ceci est potentiellement une grande question newb

concombre

Given /^that a user is logged in$/ do 
    current_user = User.first 
    render new_user_post_path(current_user) 
end 

routes.rb

map.resources :users do |users| 
    users.resources :posts, :collection => {:view => :get} 
end 

posts_controller_spec

describe PostsController do 
    describe "#new" do 
    it "should be successful" do 
     get :new 
     response.should be_success 
    end 
    end 
end 

Mon premier grand échec épique

(::) failed steps (::) 

No route matches {:controller=>"posts", :action=>"new"} (ActionController::RoutingError) 
./features/step_definitions/tasklist_steps.rb:3:in `/^that a user is logged in$/' 
features/tasklist.feature:7:in `Given that a user is logged in' 

Failing Scenarios: 
cucumber features/tasklist.feature:6 # Scenario: List SubmitLink 

1 scenario (1 failed) 
3 steps (1 failed, 2 skipped) 
0m0.147s 
rake aborted! 

Désolé, je suis trop newb. C'est ma première tentative de concombre. :(

Répondre

3

Eh bien d'abord la carte est dépréciée dans Rails 3 voies, vous devriez probablement quelque chose comme ça.

resources :users do 
    resources :posts 
end 

La façon dont j'écris normalement mes Givens, je suivre le chemin que l'utilisateur fait prendre , créez l'utilisateur dans la base de test, puis en fait aller à la page de connexion et connectez-vous, si tout est réglé correctement dans l'application

Given /^I have one user "([^\"]*)" with email "([^\"]*)" and password "([^\"]*)"$/ do |username,email, password| 
    @user = User.new(:email => email, 
        :username=>username, 
        :password => password, 
        :password_confirmation => password) 
    @user.save! 
end 

Given /^I am an authenticated user$/ do 
    name = 'exmample' 
    email = '[email protected]' 
    password = 'secret!' 

    Given %{I have one user "#{name}" with email "#{email}" and password "#{password}"} 
    And %{I go to the user login page} 
    And %{I fill in "user_username" with "#{name}"} 
    And %{I fill in "user_password" with "#{password}"} 
    And %{I press "Sign in"} 
end 

Je l'utilise de la manière suivante:.

Feature: 
    In order to reboot my crappy/POS equipment without bothering the awesome Noc Monkeys 
    I would like to login to a webpage and see the status of and control the outlets on my equipment 

    Background: Valid and authenticated user with at least one outlet to control 
    Given I am an authenticated user 

    @ok 
    Scenario: Viewing All outlets 
    Given I am able to control an outlet with index "1" 
    And I am on the home page 
    Then I should see "server_1" 

Aussi, normalement, je n'appelle pas de rendu à l'intérieur d'un pas de concombre. Puisque vous travaillez avec un navigateur simulé (en supposant webrat/capybara), vous devriez visit path_to(page_name).

+0

Righteo. Je l'ai compris. Merci un bazillion. Je suis sûr que je tomberai dans une douzaine d'autres pièges entre maintenant et être un newb encore moins;). Merci pour l'aide. – Trip