RestTemplate Mock создает исключение NullPointerException - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть шаблон отдыха, который делает вызов в методе класса обслуживания, например:

public CustomerResponse someMethod() {
CustomerResponse response = restTemplate.exchange(url, HttpMethod.GET, null,  CustomerRes.class).getBody();
return response;
}

При попытке смоделировать restTemplate в моем тестовом классе он продолжает выдавать исключение NullPointerException в строке, где вызывается ложный restTemplate:

public void checkResponseIsNotNull() {
CustomerResponse customerResponseMock = mock(CustomerResponse.class);
when(restTemplate.exchange(url, HttpMethod.GET, null, CustomerResponse.class).getBody()).thenReturn(customerResponseMock);
CustomerResponse cr = service.someMethod();
Assert.assertNotNull(cr);
}

Почему выбрасывается NullPointer? Ранее я издевался над RestTemplate, просто без метода getBody (), который заставляет поверить, что он вызывает нулевой указатель.

1 Ответ

0 голосов
/ 13 ноября 2018

Вы должны добавить еще один уровень издевательства:

CustomerResponse customerResponseMock = mock(CustomerResponse.class);
ResponseEntity reMock = mock(ResponseEntity.class);

when(reMock.getBody()).thenReturn(customerResponseMock);
when(restTemplate.exchange(url, HttpMethod.GET, null, CustomerResponse.class)).thenReturn(reMock);

CustomerResponse cr = service.someMethod();

Первоначально вы настраивали только ResponseEntity, а RestTemplate по-прежнему оставался со значениями по умолчанию. Таким образом, при вызове exchange возвращается ноль.

...