В моем представлении есть условие, основанное на вспомогательном методе, определенном в контроллере приложения, который я определил как вспомогательный метод.
<% if logged_in? %>
Когда моя спецификация попадает сюда, она говорит:
ActionView::Template::Error:
undefined method `logged_in?' for #<#<Class:0x007fdc06b71aa8>:0x007fdc0b9b0930>
Когда я использую свой браузер, он работает отлично. Я попытался заглушить это, но я получаю другую ошибку, когда я пытаюсь заглушить это на представлении или контроллере. Вот как выглядит мой тест:
it "has a logout link" do
render
expect(rendered).to have_link "Logout"
end
Вот мой гемфайл:
ruby "2.4.1"
gem "bootsnap", ">= 1.1.0", require: false
gem "coffee-rails", "~> 4.2"
gem "jbuilder", "~> 2.5"
gem "pg"
gem "puma", "~> 3.11"
gem "rails", "~> 5.2.1"
gem "rails-controller-testing"
gem "sass-rails", "~> 5.0"
gem "turbolinks", "~> 5"
gem "uglifier", ">= 1.3.0"
group :development, :test do
gem "byebug", platforms: %i[mri mingw x64_mingw]
end
group :development do
gem "listen", ">= 3.0.5", "< 3.2"
gem "spring"
gem "spring-watcher-listen", "~> 2.0.0"
gem "web-console", ">= 3.3.0"
end
group :test do
gem "capybara", ">= 2.15"
gem "chromedriver-helper"
gem "factory_bot_rails"
gem "rspec-rails", "~> 3.7"
gem "selenium-webdriver"
gem "shoulda-matchers", "~> 3.1"
end