mock によって返ってくる値を呼び出す度に変更する
↓こんな感じでやる。
a = [] a.should_receive(:size).ordered.and_return(1) a.should_receive(:size).ordered.and_return(2) a.should_receive(:size).ordered.and_return(3) 5.times do p a.size end
↓結果。設定した回数以上に呼び出すと、最初の物が繰り返されるらしい。
1 2 2 1 1
ordered で、メソッドの呼び出された順を確認可能というのは知っていたけど、これは知らなかった。
当たり前といえば、当たり前の動きではあるのだけど。