Rails3 app with Rspec2 and Cucumber
Cucumber
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
My first big epic Fail
(::) 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!
Sorry, I’m too newb. This is my first ever attempt at cucumber. 🙁
Well first off map is deprecated in Rails 3 routes, you should probably have something like this.
The way I normally write my givens, I follow the path that the user would actually take, create the user in the test db, and then actually going to the login page and signing in, so everything gets set correctly in the app.
I use it the following way:
Also, normally I don’t call render inside a cucumber step. Since you are working with a simulated browser (assuming webrat/capybara) you would
visit path_to(page_name).