I'm running through Michael Hartl's Rails Tutorial.
I'm trying to verify the title of my page. The test looks like this:
it "should have the right title" do
get 'home'
response.should have_selector("title", :content => "Ruby on Rails Tutorial Sample App | Home")
end
The HTML head section looks like this
<head>
<title>Ruby on Rails Tutorial Sample App | Home</title>
</head>
I'm getting the following failure
1) PagesController GET 'home' should have the right title Failure/Error: response.should have_selector("title", :content => "Ruby on Rails Tutorial Sample App | Home") expected following output to contain a Ruby on Rails Tutorial Sample App | Home tag: # ./spec/controllers/pages_controller_spec.rb:13:in `block (3 levels) in '
I'm expecting this to pass. What am I doing wrong? I'm using Rails 3 and RSpec 2.0.0
Controller specs don't normally render the complete view, since they're intended to test controllers in isolation. You can tell Rspec to render the whole page by including the directive integrate_views
at the top of the example group:
describe MyController do
integrate_views
However you should ask yourself if you really want to do this, or if it would make more sense to write view specs.
btw you can also use the CSS3 selector syntax to save a few keystrokes (might need to include the Webrat matchers for this):
response.should have_selector("title:contains('Ruby on Rails Tutorial Sample App | Home')")
EDIT
For Rspec2, replace integrate_views
with render_views
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