インターフェイスを返すファクトリがありますFormatService
:
public class FormatServiceFactory {
public FormatService getService() {
...
}
}
単体テスト でFormatService
-のスタブ実装を常に返すように、このファクトリをモックアウトすることは可能ですか?FormatServiceStub
インターフェイスを返すファクトリがありますFormatService
:
public class FormatServiceFactory {
public FormatService getService() {
...
}
}
単体テスト でFormatService
-のスタブ実装を常に返すように、このファクトリをモックアウトすることは可能ですか?FormatServiceStub
依存します。テスト中のコードはファクトリをどのように取得/使用しますか?
テストしているメソッドで明示的にインスタンス化されている場合、または静的ファクトリである場合、それをモックすることはできません。
テスト対象のオブジェクトに注入されている場合は、テストを実行する前にモック ファクトリを作成して注入できます。
ファクトリのモックは、JMock を使用すると十分に簡単です。コード例から、それはインターフェイスではなくクラスのように見えるため、JMock 1 の cglib パッケージで JMockの cglib バージョンとMockObjectTestCaseクラスを使用するか、 JMock 2 の ClassImposteriser を使用する必要があります。
モックが作成されると、getService() メソッドの期待値を定義するときに、スタブ化された実装 (またはモック FormatService でさえも) を返すようにすることができます。
嘲笑の嘲笑 = 新しい JUnit4Mockery() {{setImposteriser(ClassImposteriser.INSTANCE);}};
最終的な FormatServiceFactory ファクトリ = mockery.mock(FormatServiceFactory .class);
context.checking(new Expectations() {{ oneOf (factory ).getService(); will(returnValue(new FormatServiceMock())); }});