スタブとモックの違い
どちらもTest Doubleに包括される
スタブとモックの違い
オブジェクト指向設計実践入門を参照
テストを行うべき
受信メッセージのテスト
オブジェクトがほかのオブジェクトからメッセージを受け取ったとき、期待する答えを返すことができるか
送信メッセージのテスト
オブジェクトが副作用のあるメッセージ送信を行うとき、その回数や引数が適切か
スタブ
「受信メッセージのテスト」のために使う
テストで注目しているオブジェクトが依存するものを決まりきった動きしかしない偽物に置き換える。テストの合否が注目しているオブジェクト実装の正しさだけに依存するようにする
モック
「送信メッセージのテスト」のために使う
引数の検証や回数の検証といった機能が必要になる
RSpec mocks and stubs in plain English
xUnit Test Patternsを参照
スタブ
プログラムをテストするために必要な動作をさせるために、 実際のオブジェクトの代わりに使用する偽のオブジェクト
Test Stub の仕事の大部分は、メソッドの呼び出しに応じてあらかじめハードコーディングされた値を返すこと
モック
モックオブジェクト上で呼び出されるメソッドをリッスンするために、実際のオブジェクトの代わりに使用される偽のオブジェクト
モックオブジェクトの主な仕事は、正しいメソッドが呼び出されることを確認すること