Как не издеваться в Юнит - PullRequest
0 голосов
/ 08 апреля 2020

В нашей базе кода есть класс LocationService, который в основном делает две вещи: делает HTTP-вызовы для поиска «Locations» и выполняет большую работу для отображения информации, возвращающейся в пригодный для использования формат. По разным причинам, в первую очередь, SRP, мы хотели бы разделить этот класс на два класса: LocationLookupService и LocationFactoryService. Мы сделали это, и теперь LocationLookupService выполнит свою работу HTTP и затем вызовет сервис Factory. С точки зрения src/main, это, кажется, работает нормально. Тем не менее, модульные тесты для службы Lookup не удаются, потому что Фабрика не подвергается насмешкам - и я не хочу, чтобы это было. Я хочу, чтобы служба «Уточняющий запрос» вызывала фактическую фабрику без необходимости постоянно полагаться на макеты типа doCallRealMethod (которые не рекомендуются).

Как правильно подключить фактический компонент Service Factory к компоненту Lookup во время тестирования? Я пробовал различные комбинации @Autowired, вызова конструктора и т. Д.

@Autowired private LocationFactoryService locationFactoryService;

@InjectMocks private LocationLookupServiceImpl locationService;

1 Ответ

0 голосов
/ 09 апреля 2020

Поговорив с еще несколькими людьми, я думаю, что нашел ответ: использовать функцию Spy либо с помощью аннотации @Spy, либо с помощью метода Mockito.spy (). Тем не менее, меня также предупредили, что это потенциально скользкий путь к плохому тестовому коду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...