第 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 在
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