Я пытаюсь передать ранее передаваемый rspec "view spec" для передачи после добавления метода Devise user_signed_in?
к рассматриваемому шаблону. Шаблон выглядит примерно так:
<% if user_signed_in? %>
Welcome back.
<% else %>
Please sign in.
<% endif %>
Представленная спецификация вида выглядит примерно так:
require "spec_helper"
describe "home/index.html.erb" do
it "asks you to sign in if you are not signed in" do
render
rendered.should have_content('Please sign in.')
end
end
Ошибка, возникающая после добавления вызова на user_signed_in?
, следующая:
1) home/index.html.erb asks you to sign in if you are not signed in
Failure/Error: render
ActionView::Template::Error:
undefined method `authenticate' for nil:NilClass
# ./app/views/home/index.html.erb:1:in `_app_views_home_index_html_erb__1932916999377371771_70268384974540'
# ./spec/views/home/index.html.erb_spec.rb:6:in `block (2 levels) in <top (required)>'
Есть много ссылок на эту ошибку в Интернете, но мне еще предстоит найти достаточно подробный ответ, чтобы я мог снова пройти тест. Я считаю, что проблема имеет какое-то отношение к представлению (которое тестируется изолированно от любых моделей/контроллеров), не имея какой-либо ключевой инфраструктуры Devise. Ваши предложения приветствуются.
Кроме того, как только тест пройдет, как бы я проверил другой путь (пользователь уже подписал)? Я предполагаю, что это будет очень похоже. Спасибо.