JPA Unit Test Case Требуется операция удаления, но не вызывается

У меня возникла проблема при попытке создать тестовые примеры 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)

Есть идеи? Спасибо!

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
361
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ошибка говорит сама за себя: вы проверяете метод 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());
}

Могу я уточнить у вас, есть ли у вас пример модульного теста для обновления?

BlackMamba 09.04.2019 11:36

@hyperfkcb, нет, но делается точно так же. Только не путайте выполняемые методы.

Pavel Smirnov 09.04.2019 11:38

Другие вопросы по теме