使用 mockito 和 spring 测试服务
testing service with mockito and spring
正在尝试测试服务方法。
这是我要测试的方法:
@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 映射器的服务?
如果您在 ReportListDTO
对象上实现 equals
,assertEquals
将使用它。
许多像 intelliJ 或 Eclipse 的 IDE 可以为你做这件事……否则,你可以写这样的东西:
@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;
}
正在尝试测试服务方法。 这是我要测试的方法:
@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 映射器的服务?
如果您在 ReportListDTO
对象上实现 equals
,assertEquals
将使用它。
许多像 intelliJ 或 Eclipse 的 IDE 可以为你做这件事……否则,你可以写这样的东西:
@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;
}