起きた事象
gem devise
を使って管理者画面を作成後、Rspec でテストを書いていたが
401 Unauthorized
認証周辺で引っかかりテストが通らない。
解決方法
allow(controller).to receive(:authenticate_admin_user!).and_return(true)
モックとは
mock: 【名】擬似、偽り 参照 weblio
本物の振る舞いをするような、偽物のプログラム
使うタイミング
ex) web API テスト時
=> 定義しているメソッドを使ったときに、実際にリクエストしてしまうのを防ぐ。
今回使った構文
allow(♡).to receive(★).and_return(true)
★が♡で呼ばれた時、trueを返すという意味となる。
結果
今回は authenticate_admin_user!
がcontroller
で呼ばれた時にtrue
を返す。
これを before do ~ end で囲ってあげる。
力技ですがこれで認証が通るはずです。
before do
allow(controller).to receive(:authenticate_admin_user!).and_return(true)
end
参考
ありがとうございました。
今後はモックとスタブについても違いがあるようなので、調べてみたいです。
使えるRSpec入門・その3「ゼロからわかるモック(mock)を使ったテストの書き方」
RspecでMockを使う
gem devise ~Wiki~