最近、私は契約テストと共同テストに関する多くの記事(主にJB Rainsbergerから)を読んでいます。それを取り入れるために、私は小さなプロジェクトを始めました。
私の理解では、コントラクトテストの責任は、実装がそのインターフェイス固有のコントラクトを尊重していることを確認することです。言い換えれば、それはリスコフの置換原則を奨励します。
オブジェクトの共同作業者を嘲笑することは、基本的に、それについての仮定を立てることです。さて、これらの仮定が変わるとどうなりますか?このようにMockitoを使用してコラボレーターをモックすると(スタブと同じことになります):
when(collaborator.doSomething(someArgument)).thenReturn(someValue);
コラボレーターのインターフェース(つまり、そのコントラクト)を変更すると、変更に気付くことができなくなります。
だからここに私の質問があります:テスト対象のシステムに間接的な入力を提供する共同作業者を偽造するとき、見過ごされているインターフェース/契約の変更を防ぐためにスタブを使用する必要があるのは正しいですか?
これが私がすでにチェックしたいくつかのリンクです:
私は十分に明確であることを願っていますが、そうでない場合は、これをより透明にするために最善を尽くします。よろしくお願いします。