Zuruzuru Blog
🍜< ズルズル

March 10, 2022

Rspecでインスタンスのメソッドをモックしたい

#Rspec
#Ruby

Rubyのことブログに描くのはじめてだ。

Example.new.foo

このfooをmockしようとしたら、インスタンスのmockになるから毎回変わってmockできなくね?と思った。 単純にインスタンス自体をmockしてから、そこに対して新しくmockすれば良いことに気づいた。

mock = instance_double("Example")
allow(Example).to receive(:new).and_return(mock)
allow(mock).to receive(:foo).and_return(result)

書きがてら調べてると用語間違えてるかも、モックじゃなくてスタブというのかもしれない。

あとallowじゃなくてallow_any_instance_ofっていうのもあるみたい。使えるなら特定のインスタンスに関心があるとき以外はこっちで良さそう。

これくらい気軽にブログ書いてこう。