Шпионаж экземпляра Mockito работает по-разному для внутренних и внешних вызовов - PullRequest
0 голосов
/ 31 января 2020

Я пытаюсь исправить очень старый тест, и я считаю, что лучший подход к исправлению - это избегать вызова метода X, который не имеет ничего общего с реальной логикой теста c. Ситуация следующая

Экземпляр контроллера тестируется с помощью Mock MVC. Запрос передается и обрабатывается экземпляром контроллера, а затем, в зависимости от ответа, я делаю утверждения. Во время обработки запроса контроллер вызывает сам метод X - и я хочу пропустить реальные логики c метода X (или просто вместо этого вернуть некоторые ложные данные).

Теперь я попытался шпионить за экземпляр и его метод перед началом обработки, и выполните

doReturn(MockData).when(controllerInstance).methodX();

Кажется, что он работает так, как и ожидалось в Scope класса Testing (поэтому его внешний вызов так, как: controllerInstance.methodX () работает, как я и ожидал) , но когда запрос пройден (и исполняется реальный код контроллера), метод X вызывается из самого контроллера, и это ДА, выполняющий фактическую логику c, которую я хотел избежать.

Я не уверен, что что-то пропустил или просто Mockito.spy () не работает так, как я ожидаю (внутренние и внешние вызовы)

Я считаю, что этого объяснения высокого уровня будет достаточно, чтобы описать мою проблему , но если требуется более подробная информация, пожалуйста, дайте мне знать. Заранее спасибо

...