クラスBのオブジェクトを内部的にインスタンス化するクラスAがあります。その2番目のクラスには、ネットワーク接続を使用するなど、多くの外部副作用があります。
public class A {
private B b;
public A() {
b = new B(); // 3rd party class that calls out externally (e.g. to a db)
}
}
クラスBのモック実装を提供することでクラスAを単体テストしたいと思います。独自のクラスを作成するか、Mockitoや他のフレームワークなどを使用して、Bのモックバージョンを簡単に作成できますが、このモック実装をクラスに注入するにはどうすればよいですか。 Aのコード?
クラスAのコンストラクターでクラスBのインスタンスを要求できると思いますが、それは醜いようです。クラスAがどのようにビジネスを行っているかを実際に知る必要はありません。
Pythonには、テスト中の実行時に関数に「パッチを適用」できる「モック」ライブラリがあります。Javaには似たようなものがありますか?