У меня возникла проблема при попытке создать тестовые примеры junit для удаления с помощью JPA. В моем классе обслуживания я использую функцию по умолчанию, предоставляемую JPA:
public void delete(Long id) {
log.debug("Request to delete Enroll : {}", id);
enrollRepository.deleteById(id);
}
Затем мой модульный тест, я пытаюсь смоделировать объект, а затем выполнить удаление:
@Test
public void testDeleteEnrollExpectSuccess() {
Enroll enroll = prepareEnrollWithBedAllocation();
enrollService.delete(enroll.getId());
verify(enrollRepository, times(1)).delete(enroll);
}
Я пытаюсь издеваться над объектом enroll следующим образом:
private Enroll prepareEnrollWithBedAllocation() {
LocalDateTime localDateTime = LocalDateTime.now();
ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, ZoneId.of("UTC"));
Enroll enroll = new Enroll();
enroll.setId(new Long(1));
enroll.seteDate(zonedDateTime);
enroll.setEbStartdt(zonedDateTime);
enroll.setEbEnddt(zonedDateTime);
enroll.setBed(prepareBed());
enroll.setPatient(preparePatient());
enroll.setDoc(prepareDoc());
enroll.seteCondition("Normal");
return enroll;
}
Однако я получаю эти сообщения об ошибках, и мой тестовый пример не удался:
Wanted but not invoked:
enrollRepository.delete(
Enroll{id=1, eCondition='Normal', eRemarks='null', ebStartdt='2019-04-09T16:40:32.703Z[UTC]', ebEnddt='2019-04-09T16:40:32.703Z[UTC]', eDate='2019-04-09T16:40:32.703Z[UTC]'}
);
-> at com.team.generated.service.EnrollServiceTest.testDeleteEnrollExpectSuccess(EnrollServiceTest.java:61)
However, there was exactly 1 interaction with this mock:
enrollRepository.deleteById(1L);
-> at com.team.generated.service.EnrollService.delete(EnrollService.java:74)
Есть идеи? Спасибо!
Ошибка говорит сама за себя: вы проверяете метод delete(Long id)
:
verify(enrollRepository, times(1)).delete(enroll);
Однако ваш сервисный объект вызывает метод deleteById()
:
enrollRepository.deleteById(id);
Я думаю, вы хотите сделать это:
@Test
public void testDeleteEnrollExpectSuccess() {
Enroll enroll = prepareEnrollWithBedAllocation();
enrollService.delete(enroll.getId());
verify(enrollRepository, times(1)).deleteById(enroll.getId());
}
@hyperfkcb, нет, но делается точно так же. Только не путайте выполняемые методы.
Могу я уточнить у вас, есть ли у вас пример модульного теста для обновления?