Я использую JDK 11 и пружинный ботинок. Я реализую API отдыха и имею 3 уровня:
- контроллер
- уровень обслуживания
- уровень доступа к данным
У меня были классы против интерфейсов на уровне доступа к данным и не имел никакого интерфейса на уровне сервиса.
Я написал интеграционные тесты, используя Mock Mvc, Mockito и др. c, чтобы проверить весь путь для каждой точки , выставленный контроллером. Это не было проблемой, пока я не попытался представить интерфейс на уровне сервиса.
Изначально я издевался только над репозиториями / Daos. Итак, структура класса выглядела так:
public interface ClientRepo{
......
}
public class ClientRepoImpl implements ClientRepo{
......
}
Смоделировал возвращенные данные как:
@MockBean
private ClientRepo client;
....
Mockito.when(client.isExistFkUnitId(Mockito.any(UUID.class))).thenReturn(false);
Пока все было хорошо.
Теперь я представил интерфейс на уровень обслуживания как:
public interface ClientService{
......
}
public class ClientServiceImpl implements ClientService{
......
}
И попробовал (Попытка вызвать реальный метод обслуживания) :
@MockBean
private ClientService clientService;
....
Mockito.when(clientService.isExistFkUnitId(Mockito.any())).thenCallRealMethod();
Но все время не получал ничего, кроме нуля .
Есть ли способ сделать вызов реального метода с сохранением интерфейса?