【发布时间】:2017-06-22 00:19:48
【问题描述】:
假设我们有以下 sn-p 作为完整 Java EE 应用程序的一部分:
@Singleton
public class LoginService {
@Inject
private UserDAO userDAO;
protected boolean login(String username, String password){
// [...]
User user = userDAO.findByUsername(username);
// [...]
}
}
UserDAO 是一个接口,该接口有一个名为 DatabaseUserDAO 的特定类实现,它被注入到 userDAO 字段中。
现在我要为登录方法 e 编写一个测试。 G。 testLoginSuccessfulIfLoginDataCorrect()。但是因为我不想依赖数据库,所以我只想通过使用一个类来存根它,例如public class TestUserDAO implements UserDAO并注入这个而不是应该注入的默认类。实施它的可能性是什么?我们还假设没有构造函数注入或其他方式来初始化该字段。
【问题讨论】:
-
我认为最面向 CDI 的方式是使用Alternative bean。如果启用,替代方案将取代原始 bean,并且任何注入都将使用此替代方案完成。你考虑过吗?我可以进一步详细说明,只是不确定这就是你所追求的。
-
也可以看看CDI Unit。
标签: java jsf jakarta-ee dependency-injection cdi