【发布时间】:2019-01-16 18:16:08
【问题描述】:
我有一个 empModel 和 empDto 对象。在 Spring Boot 应用程序中,我正在进行服务调用以按 Id 获取员工模型。该方法通过服务调用从数据库中获取empModel。 Dozermapper 填充 DTO 并返回 dto。 DozerMapper 被注入到控制器中。
在对方法进行单元测试时面临困难。 我可以使用 when/thenReturn 来模拟服务。但是,我无法将 dozerMapper 模拟为具有 void 返回的方法。对方法进行单元测试的正确方法是什么?
@Inject
public Controller(DozerBeanMapper dozerBeanMapper, EmployeeService service){
this.dozerBeanMapper = dozerBeanMapper;
this.service = service;
}
@GetMapping("/{id}")
public EmpDto getEmployeeById(@PathVariable long id){
EmpModel empModel = service.getEmployeeById(id);
EmpDto empDto = new EmpDto();
dozerBeanMapper.map(empModel,empDto);
return empDto;
}
【问题讨论】:
-
有不同的方法来模拟 void 方法的行为。这是一个很好的参考:baeldung.com/mockito-void-methods
-
展示你是如何编写测试类和模拟的
-
@MukulGoel。我检查了链接,似乎 doAnswer() 适合使用。通过使用它,我假设我可以模仿映射器方法的行为,以便测试通过并且不会获得 NPE。这是正确的理解吗?
标签: unit-testing spring-boot dozer