Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 需要关于单元测试方法的建议,该方法使用;“推土机地图”;方法_Unit Testing_Spring Boot_Dozer - Fatal编程技术网

Unit testing 需要关于单元测试方法的建议,该方法使用;“推土机地图”;方法

Unit testing 需要关于单元测试方法的建议,该方法使用;“推土机地图”;方法,unit-testing,spring-boot,dozer,Unit Testing,Spring Boot,Dozer,我有一个empModel和empDto对象。在一个spring boot应用程序中,我正在进行一个服务调用,以通过Id获取员工模型。在该方法中,empModel是通过进行服务调用从数据库中获取的。Dozermapper填充DTO并返回DTO。将DozerMapper注入控制器 面对单元测试方法的困难。 我可以使用when/thenReturn模拟服务。但是,我无法将dozerMapper模拟为具有void返回的方法。单元测试方法的正确方法是什么 @Inject public Contro

我有一个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;
  }

如果调用将EmpDto类作为第二个参数传递的map方法,Dozer将创建EmpDto。它返回EmpDto实例,这很容易模拟

@GetMapping("/{id}")
public EmpDto getEmployeeById(@PathVariable long id){
    EmpModel empModel = service.getEmployeeById(id);
    return dozerBeanMapper.map(empModel,EmpDto.class);
}

有不同的方法来模拟void方法的行为。这是一个很好的参考:展示您是如何编写测试类和mocks@MukulGoel. 我检查了链接,似乎doAnswer()适合使用。通过使用它,我假设我可以模仿mapper方法的行为,这样测试就会通过,而不会得到NPE。这是正确的理解吗?