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.
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. - Toni 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. >> >> Cheers, >> David > > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users > _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users