Тест заголовка RSpec не проходит с переменной full_title, но проходит со строковым текстом, который переменная full_title предоставляет заголовку

Я просматриваю главу 5 RailsTutorial.org.

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

Ошибка говорит о неопределенном методе '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

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


person ATSiem    schedule 07.05.2012    source источник
comment
А как насчет вашего spec/support/utilities.rb ?   -  person tomferon    schedule 08.05.2012
comment
Я пропустил это. Пробую сейчас.   -  person ATSiem    schedule 08.05.2012
comment
Хех, я столкнулся с точно такой же проблемой в главе 5 и просто погуглил, чтобы посмотреть, есть ли решение. Не знаю, как вы, но мой файл spec/support/utilities.rb содержит эту функцию, и похоже, что этот файл не загружается автоматически, но мне нужно это проверить.   -  person Gerry    schedule 08.05.2012
comment
Странно, только что перезапустил гуард и теперь работает. Ну что ж. Удачи в решении вашего вопроса ATSiem   -  person Gerry    schedule 08.05.2012
comment
Спасибо за помощь тоферону и Джерри! Все мои тесты full_title заработали, как только я включил 'utilities.rb'. Я ПОЛНОСТЬЮ умолчал об этом, так как казалось, что руководство ссылается на упражнение из предыдущей главы. Оказывается, это было точное дублирование кода в двух местах. (Не совсем идеально, как упоминается.)   -  person ATSiem    schedule 08.05.2012


Ответы (5)


Перезапуск Guard решает проблему.

person Andrii Yurchuk    schedule 28.05.2012
comment
это сработало для меня. У меня такая же проблема. Команда для запуска Guard — это bundle exec guard - person hatunike; 06.11.2012
comment
Это сработало для меня. Всегда обязательно перезапускайте Guard, прежде чем делать что-либо еще. - person narzero; 29.10.2013

Чтобы тесты full_title работали, обязательно создайте spec/support/utilities.rb из листинга 5.26.

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

person ATSiem    schedule 08.05.2012
comment
То же самое, я полностью пропустил эту строку! Благодарю вас! - person an yu; 25.08.2012
comment
И, как сказал Андрей Юрчук, перезапустите Guard, если вы его используете. - person jmosesman; 15.04.2013

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

include ApplicationHelper

Это решит вашу проблему.

person Moe Hassan    schedule 22.12.2012
comment
Есть ли в этом недостатки? Я предпочитаю это решение, потому что оно уменьшает дублирование кода из ApplicationHelper в другом файле. - person Bert; 09.02.2013

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

person Aleksey Dz    schedule 16.09.2015

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

person wikichen    schedule 05.04.2013
comment
Я сделал что-то подобное: я по ошибке создал файл rspec/requests/support/utilities.rb, потому что я находился в каталоге запросов, когда создавал каталог support/. - person 7stud; 18.09.2014