投稿

インスタンス変数のメソッドをstubにしたい

インスタンス変数のメソッドをstubにしたい

テスト対象のコード内でHoge.newのように生成されるインスタンスの挙動を、実際のクラスを使わずに差し替えたいときに使う。instance_doubleで型チェック付きのダブルを作り、Hoge.newの戻り値をそのダブルに固定することで、以降のhoge_instance.say呼び出しをスタブできる。

let(:hoge_instance) { instance_double(Hoge) }

before do
  allow(Hoge).to receive(:new).and_return(hoge_instance)
  allow(hoge_instance).to receive(:say).and_return("night!")
end