gpt4 book ai didi

java - 如何使用 Mockito 实现复合对象

转载 作者:行者123 更新时间:2023-12-02 05:21:25 25 4
gpt4 key购买 nike

我想模拟一个 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时出错: Autowiring 依赖项注入(inject)失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException: 无法 Autowiring 字段: private x.y.z.Service2 x.y.z.Service2;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到依赖项的 [x.y.z.Service2] 类型的匹配 bean:预计至少有 1 个有资格作为此依赖项的 Autowiring 候选者的 bean。依赖注释:{@org.springframework.beans.factory.annotation.Autowired(required=true)}

最佳答案

您必须在接口(interface)中获取 DaoManager 合约并最后模拟

 Interface IDaoManager {
CustomerDetail getCustomerDetails();
}

public class DaoManager implements IDaoManager

然后遵循 nsanglar 的建议

 IDaoManager daoManagerMock = mock(IDaoManager.class);
[...]

当然,您必须使用其接口(interface)注入(inject) dao,无论如何,这是一个很好的实践

关于java - 如何使用 Mockito 实现复合对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26480129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com