devise を使ったコントローラテストで sign_in メソッドを使う

注意点

devise を使ったコントローラテストで sign_in メソッドを使う場合、以下の順番で定義する必要がある。

-> 先に sign_in メソッドを呼び出して、次に get メソッドを呼び出せば、うまくいく。

f:id:matt-note:20181031194706p:plain

 

間違えて、get メソッドを先に使って、次に sign_in メソッドを使う順番にすると、うまくいかない。私は、この点でハマってしまった。

 

なお、テストで sign_in メソッドを使うには、設定を追記する必要がある。以下のように、spec/rails_helper.rb で、以下のように追記する(RSpec を使っている場合)。

f:id:matt-note:20181031195509p:plain

 

Devise::Test::ControllerHelpers の説明は、以下の通り。

f:id:matt-note:20181031195618p:plain