#概要
外部サービスを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=)
と書いたら通りました。