工場の動作コードをテストするためのベストプラクティスは何だろうと思っています。私の場合、ファクトリは FooBar インスタンスのコンストラクターに渡されるいくつかの依存関係インスタンスを作成します。
public class FooBarFactory {
private Dependency1 dependency1;
private Dependency2Factory factory;
public FooBarFactory(Dependency1 dependency1, Dependency2Factory factory) {
this.dependency1 = dependency1;
this.factory = factory;
}
public FooBar create() {
return new FooBar(dependency1, factory.create(), new Dependency3());
}
}
依存関係は、他のいくつかのファクトリによって作成されるか、テスト対象のファクトリによって直接作成されます。
ファクトリの動作をテストするために、現時点でやらなければならないことは、FooBar で保護された getter をいくつか作成して依存関係を取得することです。これにより、コンストラクター インジェクションと依存関係が正しく作成されたことをアサートできます。
これは私が確信していないところです。テストの目的でいくつかのゲッターを追加すると、カプセル化が壊れるため、少し気になります。リフレクションを使用してフィールドの値を取得することもできますが、これは破りやすいため、通常は悪い習慣だと考えています。
誰でもこの問題についての洞察を提供できますか?