我想知道在使用 CDI 时如何指定在测试期间应该使用哪个模拟实现。
我知道我可以用@Alternative 标记一个模拟实现,但是我需要在beans.xml 中定义它。我想要多个模拟(用于多个对象)。假设我有一个 OrderService 和一个 EmailService。我正在编写一些不希望 EmailService 发送电子邮件的验收测试。然后是系统测试的另一组测试 - 我确实想发送电子邮件,但不应该创建真正的订单。
理想的解决方案是为每个测试方法调用指定 Alternatives,如下所示:
@BeforeMethod
public void before(){
// in this test suite we're using mock email service
addAlternative(MockEmailService.class);
}
@Test
public void testMyStuff(){
issueAnOrder(); // and verify that it worked. no emails sent!
}
是否可以?