Hey everybody I have worked quite to near the end of The RSpec Book, but now I'm having some troubles. I'm trying to get the last few Cucumber steps to work, which are: Then /^Caddyshack should be in the Comedy genre$/ do visit genres_path click_link "Comedy" save_and_open_page response.should have_content("1 movie") response.should have_content("Caddyshack") end So far everything's working, but the have_content("1 movie") doesn't, although I have hard-coded the string into the view, and when displaying what Webrat sees using save_and_open_page, the string definitely is there! Name: Comedy Contains 1 movie Edit | Back This is what Cucumber tells me: Scenario: Create movie in genre # features/create_movie.feature:7 Given a genre named Comedy # features/step_definitions/genre_steps.rb:1 When I create a movie Caddyshack in the Comedy genre # features/step_definitions/movie_steps.rb:1 Then Caddyshack should be in the Comedy genre # features/step_definitions/movie_steps.rb:10 expected there to be content "1 movie" in "" (RSpec::Expectations::ExpectationNotMetError) ./features/step_definitions/movie_steps.rb:14:in `/^Caddyshack should be in the Comedy genre$/' features/create_movie.feature:10:in `Then Caddyshack should be in the Comedy genre' I'm sort of confused anyway, because in the RSpec book I'm told to use contains("1 movie"), but this method is not found! undefined method `contains' for #<Cucumber::Rails::World:0x007fb114028010> (NoMethodError) After some searching on Google I got the hint to use should_contain("1 movie"), and this method seems to be available, but it doesn't seem to work. Anyways, I'm a bit confused now, because should_contain() was claimed to be a Capybara thing, and not a Webrat thing, but I never read something about Capybara in the book, only about Webrat. So what am I using now, and why?? Is it because the book is a bit old already, and nowadays Rails uses Capybara by default? Because when removing gem "webrat" from my Gemfile, Cucumber doesn't complain! Please also see my other post about this question (I'm sorry for having two posts, I didn't realize they both would be about the same thing): http://www.ruby-forum.com/topic/4402795 Thanks a lot for help, Josh
on 2012-06-14 09:40
on 2012-06-22 11:36
It seems I have to use page.should have_content("...") instead of response.should have_content("...") Maybe that's because Capybara is the default engine now and not Webrat?