Текущий код, как он есть сейчас, не содержит ошибок.Однако из данного кода мы не видим двух вещей:
- Мы не видим, чтобы
testOAuthToken
правильно передавалось в переменную oAuthToken
в githubService
. - Мы не видим, чтобы
userUrl
передавалось userEmailsUrl
в githubService
.
Вы должны убедиться, что все свойства соответствуют тому, который вы ожидаете от нихбыть, иначе издевательство не работает.Учитывая, что вы назвали одно свойство userUrl
, а другое - userEmailsUrl
, вполне вероятно, что ошибка есть.
Обычно, когда я сталкиваюсь с этими склонными к ошибкам ситуациями насмешки, я использую "любойmatchers " (any()
, anyString()
, ...) при издевательстве, а затем после вызова и подтверждений я использую Mockito.verify()
для проверки соответствия параметров:
Mockito.when(mockRestTemplate.getForObject(
Mockito.anyString(), // Use anyString()
Mockito.eq(GitHubEmail[].class),
Mockito.anyString())) // Use anyString()
.thenReturn(fakeEmails);
// Call + Assertions ...
Mockito.verify(mockRestTemplate).getForObject(
Mockito.eq(userUrl), // Use eq()
Mockito.eq(GitHubEmail[].class),
Mockito.eq(testOAuthToken)); // Use eq()
Причина этого в том, что вывод verify()
дает намного больше обратной связи.Вместо того, чтобы просто потерпеть неудачу, он расскажет, почему он потерпел неудачу, когда:
- Смоделированный метод был вызван с разными аргументами и какие аргументы
- Модифицированный объект вызывал разные методы