Несколько Mockito. Когда не работают в одном классе - PullRequest
1 голос
/ 03 августа 2020

Здесь работает только первый Mokcito.when, в результате чего он возвращает ноль вместо объекта.

Я возвращаю два, когда as, внутри служебного метода вызываются две функции JPA.

@Test
public void testEditComplaintStatusDetail() {

    long id = 1;
    String status = "Investigation Complete";
    EmergencyComplaint editedComplaint = new EmergencyComplaint(id, "No dogs to feed", "Investigation Complete");

    when(emergencyComplaintRepository.findById(id)).thenReturn(Optional.of(emergencyComplaint));
    when(emergencyComplaintRepository.save(editedComplaint)).thenReturn(editedComplaint);

    assertEquals(emergencyComplaintService.editComplaintStatusDetails(status, id), editedComplaint);
}

Сервис

@Override
public EmergencyComplaint findComplaintDetailsById(long id) {
    return emergencyComplaintDAO.findById(id);
}

@Override
public EmergencyComplaint editComplaintStatusDetails(String status, long id) {
    EmergencyComplaint complaint = findComplaintDetailsById(id);
    complaint.setStatus(status);
    return emergencyComplaintDAO.save(complaint);
}

DAO

@Override
public EmergencyComplaint findById(long id) {
    return emergencyComplaintRepository.findById(id).orElse(null);
}


@Override
public EmergencyComplaint save(EmergencyComplaint emergencyComplaint) {
    return emergencyComplaintRepository.save(emergencyComplaint);
}

введите описание изображения здесь

1 Ответ

2 голосов
/ 03 августа 2020

Обновление после редактирования:

Ваш макет для save() не будет работать, если ваш объект EmergencyComplaint не равен вашему объекту editedComplaint. Таким образом, вам нужно изменить (или хотя бы показать) вашу функцию equals или расширить ожидаемые параметры имитации следующим образом:

when(emergencyComplaintRepository.save(Mockito.any())).thenReturn(editedComplaint);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...