rspec-mocksメモ
モックに使えるメソッドのメモ。 この記事ではスタブ、ダブル、モックなどのワードを厳密に区別しません。 ここに書いている内容はほとんど公式ドキュメントからの抜粋です。 https://rspec.info/features/3-12/rspec-mocks/ double 1 dbl = double("Hoge") doubleメソッドでダブルオブジェクトを作成できます。 これだけではメソッド呼び出しに対応できないので、receiveメソッドで振る舞いを定義します。 1 2 3 dbl = double("Hoge") allow(dbl).to receive(:foo).and_return("bar")` dbl.foo # => "bar" doubleは実オブジェクトに存在しないメソッドも定義できます。 これを避けたい場合は、次に上げるinstance_doubleが使えます。 instance_double 1 2 3 4 5 6 dbl = instance_double("String") allow(dbl).to receive(:length).and_return(5) dbl.length # => 5 # Stringオブジェクトに存在しないので、エラーになる allow(dbl).to receive(:hoge).and_return(5) 実オブジェクトの一部の振る舞いを差し替えたいことが多いと思うので、基本的にはinstance_doubleを使うのが良いでしょう。 クラスメソッドに対しては、class_doubleがあります。 ...