第 7 章 模拟 CDI Bean
Quarkus 允许您模拟特定测试的特定 CDI Bean。
您可以使用以下方法之一模拟对象:
-
使用
src/test/java目录中的类覆盖您要模拟的 bean,并将@Alternative和@Priority (1)注解放在 bean 中。 -
使用
io.quarkus.test.Mockstereotype 注解。@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 在
src/test/java中创建使用@Alternative注解的MockExternalService:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
MockExternalService在什么地方注入使用ExternalService。在本例中,MockExternalService将在UsesExternalService中使用。
注意您可以使用
@Mock注释,而不是@Alternative、@Priority (1)和@Dependent注释。以下示例演示了如何创建使用
@Mock注解的MockExternalService类:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在测试中将 asserted 字符串从
"external"改为"mock":Copy to Clipboard Copied! Toggle word wrap Toggle overflow