double / spy / instance_double / instance_spy の違い
double
使うメソッドは定義しないといけない
spy
使うメソッドは自動的に定義される
定義していないメソッドも使えるし、メソッドチェーンもできる
doubleとspyは空のスタブを作る
テスト対象クラスにないメソッドも提議できるし、エラーにならない
instance_double も instance_spy も、Verifying Double と呼ばれるオブジェクトを返す
テストダブル対象のインスタンスに存在しないメソッドがスタブされた場合や、引数が異なる形式でメソッドが呼び出された場合にエラーを起こしてくれる
存在しないメソッドをコールしても良いし、実際の異なる引数形式でメソッドを呼び出しても良い「何でもあり」な状態
違いがよく纏まってる