ユニットテストについてさらに学ぶにつれて、この分野でよく知られている動作(相互作用)と状態検証のアプローチを理解するようになりました。
特定の操作を実行した後にシステムの状態を確認することは、私には論理的に思えます。
テスト対象のクラスと他のコンポーネントとの相互作用を検証することについても同じことが言えますか?私はまだ100%確信していません。
例えば:
public void DoSomething(IDependency dependency)
{
// some code ...
dependency.Method();
dependency.Method2();
// some more code ...
}
DoSomething()の現在の実装がMethod()とMethod2()を呼び出し、モックを使用してテスト可能であるという事実には、実際の価値がありますか?
これらの2つのメソッドの呼び出しは、DoSomething()の実装の詳細ではありませんか?
相互作用の検証は、状態ベースの検証と比較するとはるかに脆弱であり、カプセル化(この方法で隠されているものをテストする)も破られるようです。