我有一个 CDI bean,如下所示:
@Dependent
class Parser {
String[] parse(String expression) {
return expression.split("::");
}
}
Run Code Online (Sandbox Code Playgroud)
它被注入到另一个 bean 中,如下所示:
@ApplicationScoped
class ParserService {
@Inject
Parser parser;
//...
}
Run Code Online (Sandbox Code Playgroud)
我想做的是继续Parser在我的常规代码中使用,但我想使用“模拟”来进行测试。我怎样才能做到这一点?
在这种情况下,需要做的就是在 test 目录中创建 bean,如下所示:
@Alternative
@Priority(1)
@Singleton
class MockParser extends Parser {
String[] parse(String expression) {
// some other implementation
}
}
Run Code Online (Sandbox Code Playgroud)
这里@Alternative和@Priority是 Quarkus 将用来确定MockParser将使用的CDI 注释Parser(当然仅用于测试)。
更多详细信息可以在扩展作者指南中找到。
注意@Alternarive:和的使用@Priority当然不仅限于测试代码。它们可用于任何使用“覆盖”bean 的情况。
| 归档时间: |
|
| 查看次数: |
4820 次 |
| 最近记录: |