これは何?
RSpecを書くときの小技メモ。
前提
- RSpec 3.12.0
Tips
- RSpecで特定のメソッドをMockする
- Mockするメソッドはテストの中で流用されている
- 引数などの条件によって返り値を変えたい
どうする?
A:
- receiveメソッドにはブロックが渡せるので、ブロックの中で条件分岐させる
before do allow(hoge).to receive(:hogehoge) do |h| if h.dig(:criteria, :ids) # idsが含まれる場合、空の配列を返す [{ id: 'PUsR1qvef3', start_date: Date.today }] elsif h.dig(:criteria, :codes) # codesが含まれる場合、空の配列を返す [] end end end
備考
- 引数に差はないけど返り値を制御したい場合などはどうしよう