😇
RSpecのallowメソッドでハマったのでメモ
😇 はじめに
RSpec を使ったテストを書いている際に allow メソッドの挙動で少しハマってしまったことがあったので、その備忘録として残しておきます。
🤔 allow と expect
RSpec におけるスタブの方法として allow と expect があります。
allow は指定した対象が呼び出されなくてもエラーにならないのに対して、expect は指定した対象が呼び出されないとエラーになる、という違いがあります。
😇 with との組み合わせ
allow を with と一緒に使った場合、指定した引数パターン以外での呼び出しを許可しないようになるようです。
そのため、特定の引数パターンでの呼び出しをスタブしつつ、それ以外の引数での呼び出しは許可したい、といった場合には with を使ったスタブの前に以下の記述を追加する必要があります。
allow(Hoge).to receive(:enabled?).and_call_original
こうすることで、with で指定した引数パターン以外での呼び出しは元のメソッドを呼び出すようになります。
Discussion