LoginSignup
0
0

More than 1 year has passed since last update.

Instance DoubleでMock化してMock化したインスタンスに値を設定

Posted at

#概要

外部サービスをMock化して、Mock化したインスタンスに値を設定したいんだけど、瞬時に思いつかず色々調べた結果エラーメッセージに答えがあった話

エラーメッセージはちゃんと読まないとね(反省)

内容

target = External.new
target.name = "dummy"

これをMockしたかったので

let(:external_mock) { instance_double(External) }
allow(External).to receive(:new).and_return(external_mock)
allow(external_mock).to receive(:name)

こう書いたら

#<InstanceDouble(External) (anonymous)> received unexpected message :name= with ("xxxx")

怒られた。

nameで値を設定するときはどうすれば良いんだろうと思っていたら調べていたら、結局エラーメッセージが答えを与えてくれた

:name=と書いてあるじゃないか。

let(:external_mock) { instance_double(External) }
allow(External).to receive(:new).and_return(external_mock)
allow(trello_card_mock).to receive(:name=)

のようにreceive(:name)receive(:name=)と書いたら通りました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0