第 7 章 模拟 CDI Bean
Quarkus 允许您模拟特定测试的某些 CDI Bean。
您可以使用以下方法之一模拟对象:
-
覆盖您要在
src/test/java
目录中带有类模拟的 bean,并将@Alternative
和@Priority(1)
注释放在 bean 上。 -
使用
io.quarkus.test.Mock
stereotype 注解。@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