用mockito和spring测试服务

时间:2016-03-14 17:07:19

标签: java spring testing mockito dto

尝试测试服务方法。 这是我想要测试的方法:

    @Override
public ReportListDto retrieveAllReportsList() {
    List<ReportDto> reportDtos = reportMapper.toDtos(reportRepository.findAll());

    return new ReportListDtoBuilder().reportsDto(reportDtos).build();
}

这是我的测试方法(我从一些教程中得到了它):

@Test
public void testRetrieveAllReportList() throws Exception {
    List<Report> expected = new ArrayList<>();
    when(reportRepositoryMock.findAll()).thenReturn(expected);

    ReportListDto actual = reportService.retrieveAllReportsList();

    verify(reportRepositoryMock, times(1)).findAll();
    verifyNoMoreInteractions(reportRepositoryMock);

    assertEquals(expected, actual);
}

但教程不使用DTO模型。所以最后一个asert期望List<Report>对象和实际的ReportListDto对象。

这是我的ReportListDto

public class ReportListDto implements Serializable {
    private List<ReportDto> reports = new ArrayList<>();

    public List<ReportDto> getReports() {
        return reports;
    }

    public void setReports(List<ReportDto> reports) {
        this.reports = reports;
    }
}

如何测试使用dto mapper的服务?

1 个答案:

答案 0 :(得分:1)

如果您在equals对象上实施ReportListDTOassertEquals将使用它。

许多IDE(如intelliJ或Eclipse)都可以为您做到这一点......否则,您可以编写如下内容:

 @Override
    public boolean equals(Object o) {
        if (this == o)
            return true;
        if (o == null || getClass() != o.getClass())
            return false;

        ReportListDto that = (ReportListDto) o;

        return reports != null ? reports.equals(that.reports) : that.reports == null;

    }