У меня есть простое представление и помощник, который определяет заголовок.Все работает нормально, если я поднимаю представление в браузере, но тесты rspec не проходят.Вот что у меня есть:
Вот мои тесты:
describe PagesController do
render_views
before(:each) do
@base_title = "RoR Sample App"
end
describe "GET 'home'" do
it "should be successful" do
get 'home'
response.should be_success
end
it "should have the right title" do
get 'home'
response.should have_selector("title",
:content => @base_title + " | Home")
end
end
end
Контроллер страниц:
class PagesController < ApplicationController
def home
@title = "Home"
end
def contact
@title = "Contact"
end
def about
@title = "About"
end
def help
@title = "Help"
end
end
Помощник:
module ApplicationHelper
# Return a title on a per-page basis.
def title
base_title = "RoR22 Sample App"
if @title.nil?
base_title
else
"#{base_title} | #{@title}"
end
end
end
И представление:
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<%= stylesheet_link_tag :all %>
<%= javascript_include_tag :defaults %>
<%= csrf_meta_tag %>
</head>
<body>
<%= yield %>
</body>
</html>
Все это правильно отображается в браузере, но тесты не проходят, когда он достигает строки <%= title %>
.
1) PagesController GET 'home' should be successful
Failure/Error: get 'home'
ActionView::Template::Error:
undefined local variable or method `title' for #<#<Class:0xabf0b1c>:0xabeec18>
# ./app/views/layouts/application.html.erb:4:in `_app_views_layouts_application_html_erb___418990135_90147100_123793781'
# ./spec/controllers/pages_controller_spec.rb:12:in `block (3 levels) in <top (required)>'
Любая идея, что я делаюнеправильно?