0632nobodyさん
2018/04/16(月) 03:49:38.57ID:???allow(モックオブジェクト).to receive(メソッド名) ってやるやつ
あれは、letかsubjectに入れちゃえばいいと思うんだよ。
だって、Givenに相当するものだろ?
だからitの中っておかしいと思うんだ
で、itの中はexpectだけにする
expect(モックオブジェクト).to receive(メソッド名) でもテストできるけど
それだとWhen実行前に書かないといけないので
expect(オブジェクト).to have_received(:メドッド名).once
こっちを使うべきなんだろうな
rspec-mocksのSpyという機能を使います
https://qiita.com/_am_/items/398b0782fa3754ff3878
そうすると、Given Then パターンだと
subject { allow(オブジェクト).to recieve(:メソッド) }
it 'ほにゃらら' do
is_expected.to なになに
expect(オブジェクト).to have_recieved(:メソッド)
end
という形になる。まあGivenの部分とThenの部分の両方で
同じようなコードを書く必要がるというデメリットはあるな
これはallowの方に名前をつけて、そのallowが呼ばれたことという形でかければ良いんじゃないかな?