RSpec
RubyOnRails

Rspec ログイン認証を力技で反映させる書き方

More than 1 year has passed since last update.

起きた事象

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~