Closed5
RSpec メモ
allow(モックオブジェクト).to receive(メソッド名)
の形で、モックに呼び出し可能なメソッドを設定できる。
セットアップしたメソッドがちゃんと呼び出されたかどうかを検証するには、allow
の箇所を expect
にする。
expect(モックオブジェクト).to receive(メソッド名)
メソッドの引数の中身を検証するには with
を使う。
expect(モックオブジェクト).to receive(メソッド名).with(引数の中身)
モックを使う場合は必ずどこかでモックと実際の実装を置き換える必要がある。
以下のようにすることで、メソッドの返却する値やオブジェクトを置き換えることができる。
allow(実装を置き換えたいオブジェクト).to receive(置き換えたいメソッド名).and_return(返却したい値やオブジェクト)
スタブ(stub) はオブジェクトのメソッドをオーバーライドし、事前に決められた値を返します。つまりスタブは、呼び出されるとテスト用に本物の結果を返す、ダミーメソッド。
スタブをよく使うのはメソッドのデフォルト機能をオーバーライドするケース。特にデータベースやネットワークを使う処理が対象。
and_wrap_original
メソッドの呼び出しをラップして、メソッドの呼び出し前や呼び出し後に処理を割り込みたいときに使う。
allow(object).to receive(:method).and_wrap_original do |m, *args|
# メソッドの呼び出し前に何かしたい場合はここに書く
m.call(*args) # メソッドの呼び出し
# メソッドの呼び出し後に何かしたい場合はここに書く
end
このスクラップは2022/11/26にクローズされました