Ответ 1
Создайте помощника в spec/support/utilities.rb
согласно списку 5.26 книги.
Учитывая, что у меня есть метод full_title
в модуле ApplicationHelper, как я могу получить к нему доступ в спецификации запроса RSpec?
У меня есть следующий код:
app/helpers/application_helper.rb
module ApplicationHelper
# Returns the full title on a per-page basis.
def full_title(page_title)
base_title = "My Site title"
logger.debug "page_title: #{page_title}"
if page_title.empty?
base_title
else
"#{page_title} - #{base_title}"
end
end
spec/requests/user_pages_spec.rb
require 'spec_helper'
describe "User Pages" do
subject { page }
describe "signup page" do
before { visit signup_path }
it { should have_selector('h2', text: 'Sign up') }
it { should have_selector('title', text: full_title('Sign Up')) }
end
end
При запуске этой спецификации я получаю следующее сообщение об ошибке:
NoMethodError:
undefined method full_title' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x00000003d43138>
В соответствии с тестами в Michael Hartl Rails Tutorial, я должен иметь доступ к вспомогательным методам приложения в моей спецификации пользователя. Какую ошибку я делаю здесь?
Создайте помощника в spec/support/utilities.rb
согласно списку 5.26 книги.
Другой вариант - включить его непосредственно в spec_helper
RSpec.configure do |config|
...
config.include ApplicationHelper
end
Я делаю Ruby on Rails Tutorial (версия Rails 4.0), используя новейшие версии каждого драгоценного камня. Я столкнулся с аналогичной проблемой, задающейся вопросом, как включить ApplicationHelper в спецификации. Я получил его работу со следующим кодом:
RSpec.configure do |config|
...
config.include ApplicationHelper
end
require 'rails_helper'
describe "User pages", type: :feature do
subject { page }
describe "signup page" do
before { visit signup_path }
it { is_expected.to have_selector('h2', text: 'Sign up') }
it { is_expected.to have_selector('title', text: full_title('Sign Up')) }
end
end
...
# ruby 2.2.1
gem 'rails', '4.2.1'
...
group :development, :test do
gem 'rspec-rails', '~> 3.2.1'
...
end
group :test do
gem 'capybara', '~> 2.4.4'
...