У меня есть вопрос относительно использования Mockito thenCallRealMethod.Я прочитал предупреждения об использовании этой функции;в основном я хочу записать это в свой тест, чтобы обеспечить защиту логики своего приложения на будущее, потому что она используется в качестве библиотеки, и я хочу убедиться, что пользователи моей библиотеки имеют защиту от будущего.
Мой тестовый пример выглядит следующим образом:
@Test
public void Test() {
when(restTemplate.postForEntity(...)).thenReturn(new ResponseEntity<>(realObjectMapper.writeValueAsString(data), HttpStatus.OK));
when(objectMapper.readValue(realObjectMapper.writeValueAsString(data), TestData.class)).thenCallRealMethod();
TestData result = tested.callMethod(...);
....
}
TestData - это простой POJO, который содержит множество полей, но ничего особенно интересного, а данные являются экземпляром TestData.objectMapper - это макетированный экземпляр FasterXML Jackson ObjectMapper , а realObjectMapper - это реальный (немодированный) экземпляр того же класса.
Проблема, с которой я столкнулся, - это исключение NullPointerException, когда мое приложение пытаетсявыполнить objectMapper.readValue (на проверяемом экземпляре) в соответствии с thenCallRealMethod во второй строке теста.Я проверил, что, когда я передаю те же входные данные в realObjectMapper.readValue, тогда он работает нормально, поэтому с входными данными все в порядке.Чего мне не хватает?
Stack trace:
java.lang.NullPointerException
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2842)
.... (my code here)