LoginSignup
0
0

More than 5 years have passed since last update.

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

Posted at

起きた事象

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~

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0