20

オブジェクトを作成するためにファクトリを使用するクラスを取得しました。私の単体テストでは、ファクトリの戻り値にアクセスしたいと思います。ファクトリはクラスに直接渡され、作成されたオブジェクトのゲッターは提供されないため、ファクトリからオブジェクトを返すのをインターセプトする必要があります。

RealFactory factory     = new RealFactory();
RealFactory spy         = spy(factory);
TestedClass testedClass = new TestedClass(factory);

// At this point I would like to get a reference to the object created
// and returned by the factory.

ファクトリの戻り値にアクセスする可能性はありますか? おそらくスパイを使用していますか?
私が確認できる唯一の方法は、ファクトリ create メソッドをモックすることです。

4

2 に答える 2

2

標準的なモックのアプローチは次のようになります。

  1. ファクトリがテスト ケースで返すオブジェクトを事前に作成します。
  2. 工場のモック (またはスパイ) を作成する
  3. 事前に作成されたオブジェクトを返すようにモック ファクトリを指定します。

RealFactory にその場でオブジェクトを作成させたい場合は、それをサブクラス化し、ファクトリ メソッドをオーバーライドして call を呼び出しsuper.create(...)、テスト クラスがアクセスできるフィールドへの参照を保存してから、作成されたオブジェクトを返すことができます。

于 2011-08-17T16:08:26.267 に答える