2012-05-07 1 views
5

Я прохожу через Chapter 5 of RailsTutorial.org.Тест RSpec по названию не работает с переменной full_title, но передает строковый текст переменной full_title, предоставляющей заголовок

У меня есть один тест, который я не могу получить, независимо от того, что я делаю. Он проходит, когда я помещаю строку, которую передает переменная, но не тогда, когда я вставляю в себя эту переменную.

Ошибка говорит неопределенный метод «full_title» (я не мог найти ответ после 30 мин просмотра связанных вопросов после ввода это.)

Делая поверхностный тест, желательные содержание, отображается в приложение, название включает полный заголовок с «Зарегистрироваться».

Вот мой код:

require 'spec_helper' 

describe "User pages" do 

    subject { page } 

    describe "signup page" do 
     before { visit signup_path } 
     it { should have_selector('h1', text: 'Sign up') } 
     it { should have_selector('title', text: full_title('Sign up')) } 
    end 
end 

Это когда ошибка говорит неопределенный метод 'full_title'

Она проходит, когда я использую этот код:

require 'spec_helper' 

describe "User pages" do 

    subject { page } 

    describe "signup page" do 
     before { visit signup_path } 
     it { should have_selector('h1', text: 'Sign up') } 
     it { should have_selector('title', text: 'Ruby on Rails Tutorial Sample App | Sign up') } 
    end 
end 

Спасибо за ваша помощь! Адам

+2

Как насчет вашего 'spec/support/utilities.rb'? – thoferon

+0

Я пропустил это. Попытка это сейчас. – ATSiem

+0

Хех, я столкнулся с той же проблемой в главе 5 и просто с Google'd, чтобы узнать, есть ли решение. Я не знаю о вас, но мой файл spec/support/utilities.rb содержит эту функцию, и кажется, что этот файл не загружается автоматически, но мне придется его проверить. – Gerry

ответ

7

Чтобы сделать full_title тестов работают, убедитесь, что для создания spec/support/utilities.rb из Listing 5.26

я пропустил это случайно, так как он выглядит точно так же, как дубликат метод из главы 3.

+0

То же самое, я полностью пропустил эту линию! Спасибо! –

+1

И, как сказал Андрей Юрчук, перезапустите Страж, если вы используете это. – jmosesman

11

Перезапуск Guard устраняет проблему ,

+0

это сработало для меня. У меня такая же проблема. Команда для запуска Guard - это пакет exec guard – hatunike

+0

Это сработало для меня. Обязательно перезагрузите Guard, прежде чем делать что-либо еще. – narzero

6

У меня такая же проблема, и вот как я ее решил. Убедитесь, что файл /spec/support/utilities.rb имеет следующий код:

include ApplicationHelper 

Это позволит устранить вашу проблему.

+0

Есть ли недостатки? Я предпочитаю это решение, потому что оно уменьшает дублирование кода из «ApplicationHelper» в другом файле. – Bert

0

Я столкнулся с той же проблемой ... за исключением того, что через 20 минут ударил головой о стену, я наконец увидел, что случилось: я назвал папку rspec/supportsuppport. Неудивительно, что spec_helper.rb не смог найти. * facepalm *

+0

. Я сделал что-то похожее: я ошибочно создал файл 'rspec/requests/support/utilities.rb', потому что я был в каталоге запросов при создании каталог поддержки /. – 7stud

1

Если вы напишете: config.include ApplicationHelper в spec_helper.rb все будет работать нормально, но в тот момент я не вижу логики, чтобы иметь файл utilities.rb в spec/support (все работает без него)

Смежные вопросы