第 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 创建一个类
UsesExternalService,它在src/main/java目录中使用ExternalService: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
- 在使用
ExternalService时,MockExternalService会被注入。在本例中,MockExternalService将用于UsesExternalService。
注意您可以使用
@Mock注释而不是@Alternative、@Priority(1)和@Dependent注释。以下示例演示了如何创建使用
@Mock注解的MockExternalService类:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在测试中将断言的字符串从
"external"更改为"mock":Copy to Clipboard Copied! Toggle word wrap Toggle overflow