第7章 CDI Bean のモック化
Quarkus により、特定のテスト用に一部の CDI Bean をモック化できます。
以下の方法の 1 つを使用して、オブジェクトをモック化できます。
-
src/test/javaディレクトリーのクラスでモック化する Bean を上書きし、@Alternativeおよび@Priority(1)のアノテーションを Bean に配置します。 -
io.quarkus.test.Mockステレオタイプアノテーションを使用します。@Mockアノテーションには、@Alternative、@Priority(1)、および@Dependentアノテーションが含まれます。
以下の手順では、@Alternative アノテーションを使用して外部サービスをモック化する方法を説明します。ネイティブイメージには代替のテストが含まれていないため、この方法はネイティブイメージテストでは機能しない点に留意してください。
手順
次の例のように、
src/main/javaディレクトリーにExternalServiceを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow src/main/javaディレクトリーでExternalServiceを使用するクラスUsesExternalServiceを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の例に示すような
src/test/javaディレクトリーにテストを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow @Alternativeアノテーションを使用するsrc/test/javaにMockExternalServiceを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
MockExternalServiceは、ExternalServiceが使用されている場所に注入されます。この例では、MockExternalServiceがUsesExternalServiceで使用されます。
注記@Alternative、@Priority(1)、および@Dependentアノテーションの代わりに@Mockアノテーションを使用できます。以下の例は、
@Mockアノテーションを使用するMockExternalServiceクラスを作成する方法を示しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow テストで、アサートされた文字列を
"external"から"mock"に変更します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow