Rspecでblockを置き換える(mocha)の場合

| Comments

Rspecでテストを作成中、find_eachを置き換えてテストを実行したい欲求が。。。
で、ブロックをstubにする方法は、手持ちの参考書では見つからないので、調べてみました。
利用しているmochのライブラリによって、書き方が異なる様です。が・・・

yieldsを使えって事みたい

私が利用しているmochaの場合、yieldsで置き換える事が出来ます。

1
User.stubs(:find_each).yields( User.new( :name 'neko' ) )

メソッドチェーンで複数指定すると・・・
一回目の呼び出し、二回目の呼び出しと(二回目以降は後勝ち)内容を変えることが出来ます。

1
User.stubs(:find_each).yields( User.new( :name 'neko' ) ).then.yields( User.new( :name 'inu' ) )