On Sep 4, 2010, at 3:15 PM, Toni Tuominen wrote: > On Sat, Sep 4, 2010 at 10:29 PM, David Chelimsky <dchelim...@gmail.com> wrote: >> >> On Sep 4, 2010, at 2:26 PM, David Chelimsky wrote: >> >>> >>> On Sep 4, 2010, at 1:41 PM, Daniel Lidström wrote: >>> >>>> Hello, >>>> >>>> I am trying to run this integration test of my user controller within >>>> a rails 3 application: >>>> >>>> # spec/requests/users_spec.rb >>>> >>>> require 'spec_helper' >>>> >>>> describe "Users" do >>>> >>>> describe "success" do >>>> >>>> it "should make a new user" do >>>> lambda do >>>> visit signup_path >>>> fill_in "Name", :with => "Example User" >>>> fill_in "Email", :with => "u...@example.com" >>>> fill_in "Password", :with => "foobar" >>>> fill_in "Confirmation", :with => "foobar" >>>> click_button "Sign up" >>>> page.should have_css("div.flash.success", :text => >>>> "Welcome") >>>> response.should render_template("user/show") >>>> end.should change(User, :count).by(1) >>>> end >>>> end >>>> end >>>> >>>> The test fails when render_template is being called: >>>> >>>> dan...@ubuntu /home/daniel/programming/bowling (signing-up) $ rspec >>>> spec/requests/users_spec.rb -e "should make a new user" >>>> Run filtered using {:full_description=>/(?-mix:should make a new >>>> user)/} >>>> F >>>> >>>> Failures: >>>> 1) Users signup success should make a new user >>>> Failure/Error: response.should render_template("user/show") >>>> @request must be an ActionDispatch::Request >>>> # ./spec/requests/users_spec.rb:34 >>>> # ./spec/requests/users_spec.rb:26 >>>> >>>> Finished in 0.41306 seconds >>>> 1 example, 1 failure >>>> >>>> I am using rspec-rails (2.0.0.beta.20) with capybara (0.3.9). What am >>>> I missing here? For what it's worth I have verified the behaviour >>>> manually: registering a new user does indeed take me to the show page. >>>> Thanks in advance! >>> >>> The problem is that capybara doesn't assign anything to the @request >>> variable after visit, so it doesn't support any of the built-in rails >>> assertions that rely on @request, and render_template delegates to >>> assert_template. >> >> For more context, this works fine with the rails built-in get, post, etc >> methods: >> >> get things_path >> response.should render_template("things/index") >> >> ... as well as webrat's visit method: >> >> visit things_path >> response.should render_template("things/index") >> >> That's why I say it's really a capybara issue. Make sense? >> >>> I'd file a bug with capybara on this one.
Please post at the bottom or in-line (I move your post from the top). > Capybara is not a rails-specific solution so it doesn't know anything > about rails's rendering logic etc. I'm also fairly sure Jonas will say > that it's something that won't be implemented. Makes sense. So if we decided this was a bug, which lib should own this? > I think the key thing here is that rendering a template is a > controller level thing and Capybara is designed to be an acceptance > testing tool, hence you need to test results and not implementation > with it. +1 Cheers, David _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users