尝试测试服务方法。 这是我想要测试的方法:
@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的服务?
答案 0 :(得分:1)
如果您在equals
对象上实施ReportListDTO
,assertEquals
将使用它。
许多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;
}