我需要一些帮助来为服务层中的下面的方法编写测试。我不知道如何在Mockito中为这项服务模拟这些方法(在DAO中以及在相同的服务层中)。在此之前,我认为我应该模拟整个for循环,以避免模拟每个方法。为这种方法编写单元测试的正确方法是什么。
public List<CheckupHistoryDto> getCaseHistory(Individual patient, Individual doctor) {
List<CheckupHistoryDto> checkupHistoryList = new ArrayList<ClaimHistoryDto>();
List<CaseHistory> caseHistoryIds = caseDetailDao.fetchCaseIds(patient.getId(), doctor.getId());
for(CaseHistory caseHistory : caseHistoryIds) {
CheckupHistoryDto checkupHistoryDto = new CheckupHistoryDto();
checkupHistoryDto.setDateOfCall(formatter.format(caseHistory.getCreateDate()));
checkupHistoryDto.setPatientInfo(getPatientInfo(patient));
checkupHistoryDto.setDoctorInfo(getDoctorInfo(doctor));
checkupHistoryDto.setServiceProvided(caseDetailDao.fetchServiceHistory(caseHistory.getEventId()));
checkupHistoryList.add(checkupHistoryDto);
}
return checkupHistoryList;
}
public Patient getPatientInfo(patient) {
...
}
public Doctor getDoctorInfo(doctor) {
...
}
我的测试用例
@Test
public void testHistoryList() {
Individual patient = Mockito.mock(Individual.class);
Individual doctor= Mockito.mock(Individual.class);
List<CheckupHistoryDto> checkupHistory = caseService.getCaseHistory(patient, doctor);
assertEquals(MOCK_LIST_SIZE, checkupHistory.size());
}
答案 0 :(得分:1)
忘记“模拟for循环”,这没有任何意义,因为它是你想要测试的功能的一部分;特别是,当您对XQ类进行单元测试时,您永远不会模拟XQ类的任何部分。
你需要嘲笑以下内容:
getPatientInfo
方法为患者使用的Individual类中的任何方法。getDoctorInfo
方法使用的Individual类中的任何方法,对于医生来说。你有一些可怕的代码: