少し前に、私は見つけることができないStack Overflowの回答で、パブリックAPIをテストする必要があることを説明した文を読み、著者はインターフェイスをテストする必要があると言いました。また、メソッドの実装が変更された場合、テストケースを変更する必要はありません。これを行うと、テスト中のシステムが機能することを確認する契約が破られるため、著者は説明しました。つまり、メソッドが機能しない場合はテストが失敗しますが、実装が変更されたためではありません。
私たちがock笑について話すとき、これは私の注意を呼びました。モックはテスト対象システムの依存関係からの期待呼び出しに大きく依存しているため、モックはインターフェイスではなく実装と密接に結合されています。
モックとスタブの調査中、いくつかの記事は、依存関係からの期待に依存しないため、モックの代わりにスタブを使用する必要があることに同意しています。
私の質問は次のとおりです。
- モックはオープン/クローズの原則に違反しますか?
- 最後の段落のスタブを支持する議論に欠けているものはありますか?
- もしそうなら、いつスモックを作成するのに適したユースケースになり、スタブを使用するのに適したユースケースになりますか?
Since mocking relays heavily on expectation calls from system under test's dependencies...
これがあなたがおかしくなるところだと思います。モックは、外部システムの人工的な表現です。 外部システムに依存するコードに対してテストを実行できるように外部システムをシミュレートする場合を除いて、外部システムを決して表しません。コードが実際のモックのないシステムで