I have the following test:
it "I can Sign Up with Facebook" do
visit new_user_registration_path
click_link_or_button 'Sign up with Facebook'
# Validate
page.should render_template("registrations/signup_connect_to_facebook.html.erb")
end
In the logs I get:
Started GET "/users/auth/facebook/callback" for 127.0.0.1 at 2011-08-30 13:26:04 -0700
Processing by AuthenticationsController#create as HTML
Authentication Load (0.8ms) SELECT "authentications".* FROM "authentications" WHERE "authentications"."provider" = 'facebook' AND "authentications"."uuid" = '13' LIMIT 1
AuthenticationsController - Route D
Rendered registrations/signup_connect_to_facebook.html.erb (0.7ms)
Completed 200 OK in 111ms (Views: 3.4ms | ActiveRecord: 2.7ms)
SQL (0.3ms) ROLLBACK
Problem is the test fails:
1) authentication flows I can Sign Up with Facebook
Failure/Error: page.should render_template("registrations/signup_connect_to_facebook.html.erb")
ArgumentError:
@request must be an ActionDispatch::Request
# ./spec/requests/authentication_requests.rb:54:in `block (2 levels) in <top (required)>'
Finished in 1.11 seconds
1 example, 1 failure
What is the right method to validate the the template was rendered? Thanks
I think the problem you're having is that you're mixing levels of testing.
If you want to test rendering of a template, try doing a normal rspec controller test.
With Capybara, you should be asserting against the result of rendering the template rather than the actual rendering of the template.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With