我想模拟一个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/

10-10 22:22