我想模拟一个DAO经理,就像这样
public class DaoManager{
@Autowired
private Service1 service;
@Autowired
private Service2 service 2;
@Autowired
private DAOManager1 manager 1;
public CustomerDetail getCustomerDetails(){
manager1.getCustomerDetails();
}
public class DaoManager1{
@Autowired
private Service3 service3;
@Autowired
private Service4 service 4;
public getCustomerDetails(){
Service3.getCustName();
Service4.getCustAddress();
}
我的问题是如何模拟DaoManager类?
如果要模拟它,我需要模拟从getCustomerDetails方法调用的每个管理器/服务?
对我来说,这似乎是一笔很大的开销。有什么想法或想法我完全错了吗?
编辑:
当我运行我的junit时,出现以下错误。
造成原因:
org.springframework.beans.factory.BeanCreationException:创建名称为'mockDaoManager'的bean时出错:自动连接依赖项的注入失败;嵌套的异常是org.springframework.beans.factory.BeanCreationException:无法自动连线字段:private x.y.z.Service2 x.y.z.Service2;嵌套的异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有找到类型为[x.y.z.Service2]的匹配bean作为依赖项:至少应有1个可作为该依赖项的自动装配候选的bean。依赖性注释:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}
最佳答案
您必须在界面中获取DaoManager合同并最后模拟
Interface IDaoManager {
CustomerDetail getCustomerDetails();
}
public class DaoManager implements IDaoManager
然后按照nsanglar的建议
IDaoManager daoManagerMock = mock(IDaoManager.class);
[...]
当然,您必须使用它的接口注入dao,这是一个好习惯
关于java - 如何将Mockito用于复合对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26480129/