user_signed_in?
問題のビューテンプレートにDeviseのメソッドを追加した後、以前に渡されたrspec「ビュースペック」を渡そうとしています。テンプレートは次のようになります。
<% 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)>'
Web にはこのエラーに関する参照がたくさんありますが、テストに合格できるほど十分に説明的な回答をまだ見つけていません。この問題は、主要な Devise インフラストラクチャが利用できないビュー (モデル/コントローラーから分離してテストされている) に関係していると思います。あなたの提案は大歓迎です。
また、テストに合格したら、他のパス (ユーザーが既にサインインしている) をテストするにはどうすればよいですか? とても似ていると思います。ありがとう。