Я работаю с книгой Learn Rails By Example и натолкнулся на интересную проблему.Я заранее извинюсь, если сделаю что-то не так.Вот проблема.
В разделе 3.5, в упражнении, в котором вас просят сделать следующее:
Возможно, вы заметили некоторое повторение в спецификации контроллера Pages (Листинг 3.20).В частности, базовый заголовок, «Образец учебного приложения Ruby on Rails», одинаков для каждого теста заголовка.Используя средство RSpec before (: each), которое выполняет блок кода перед каждым тестовым примером, заполните Листинг 3.33, чтобы определить переменную экземпляра @base_title, которая устраняет это дублирование.(Этот код использует два новых элемента: символ,: каждый и оператор конкатенации строк +. Мы узнаем больше об обоих в Главе 4, и мы увидим раньше (: каждый) снова в Разделе 6.2.1.)Обратите внимание, что с базовым заголовком, захваченным в переменной экземпляра, теперь мы можем выровнять: содержимое с первым символом внутри каждой левой круглой скобки (. Это мое предпочтительное соглашение для форматирования кода, разбитого на несколько строк.
Вот как выглядит мой pages_controller_spec.rb:
describe PagesController do
render_views
before(:each) do
# Define @base_title here.
base_title = "Ruby on Rails Tutorial 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
Когда я загружаю сервер rails и открываю веб-страницу, все работает отлично. Название отображается так, как должно быть в base_title.Я запускаю rspec, я получаю следующие ошибки. Мне бы очень хотелось, чтобы это было исправлено в rspec. Что вы думаете не так?
1) PagesController GET 'home' should have the right title
Failure/Error: :content => @base_title + " | Home")
NoMethodError:
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.+
# ./spec/controllers/pages_controller_spec.rb:20
Failed examples:
rspec ./spec/controllers/pages_controller_spec.rb:17 # PagesController GET 'home' should have the right title