У меня есть универсальный метод, который вызывает указанный URL-адрес, используя RestTemplate.exchange
.Сам метод работает и загружает данные нормально, но я не могу выполнить его модульное тестирование с использованием Mockito.
Основной метод
@Service
public class MyClass{
private <T> List<T> loadData(String url) {
return restTemplate.exchange(
url, GET, null, new ParameterizedTypeReference<List<T>>(){}
).getBody().stream().collect(toList()));
}
}
Unit Test
@Runwith(MockitoJUnitRunner.class)
public class MyTest {
@Mock
private RestTemplate restTemplate;
@Test
public void givenCall_myMethod_WillReturnData(){
given(restTemplate.exchange(
ArgumentMatchers.anyString(), ArgumentMatchers.any(), any(), any(Class.class)
))
.willReturn(bodyData());
}
}
Если я использую неуниверсальную версию, то все работает нормально, однако mockito возвращает NullPointerException
с версией дженерика.
Что не так или отсутствует?