Создать исключение 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(""){};});