Создать исключение JsonProcessingException
Я пытаюсь создать исключение JsonProcessingException, которое будет выбрано макетным объектом.
when(mapper.writeValueAsString(any(Object.class))).thenThrow(new JsonProcessingException("Error"));
Однако я не могу создать объект JsonProcessingException, поскольку все конструкторы защищены. Как мне обойти это?
Ответы
Ответ 1
как насчет создания анонимного исключения типа JsonProcessingException
when(mapper.writeValueAsString(any(Object.class))).thenThrow(new JsonProcessingException("Error"){});
Скобки {} делают трюк. Это намного лучше, так как это не путает читателя тестового кода.
Ответ 2
Как насчет бросания одного из известных прямых подклассов?
для v1.0
Direct Known Subclasses:
JsonGenerationException, JsonMappingException, JsonParseException
для v2.0
Direct Known Subclasses:
JsonGenerationException, JsonParseException
Ответ 3
Это сработало для меня, что позволило сгенерировать JsonProcessingException
doThrow(JsonProcessingException.class).when(mockedObjectMapper).writeValueAsString(Mockito.any());
Ответ 4
Попробуйте использовать thenAnswer
и создайте анонимный класс из JsonProcessingException
when(mapper.writeValueAsString(any(Object.class))).thenAnswer(x-> {throw new JsonProcessingException(""){};});