tips chips

日々の作業で出てきた技術メモの切れ端を置いておくページ

RSpec receive_message_chainで引数の検証をする

method chainと引数の検証について

expect(hoge).to recieve_message_chain(:a, :b)

というように書くと hoge.a.bというメソッドが呼ばれることを確認できる。

これに加えてwithというのを使うと指定された引数が与えられたかどうかもチェックできるが、単純に

expect(hoge).to receive_message_chain(:a, :b).with('argument')

とすると hoge.a.b('argument')のチェックになってしまう。メソッドaに引数を渡している引数を確認したいときは

expect(hoge).to receive_message_chain(:a, :b).with('argument').with(no_args)

とする。むずい。