Вопрос:

Как написать модульный тест для ObjectMapper.writeValueAsString (object), который возвращает IOException

java objectmapper

18 просмотра

2 ответа

1 Репутация автора

Я пишу модульные тесты для ObjectMapper().writeValueAsString(object). У меня есть блок catch, который перехватывает IOException. Мне нужно протестировать этот блок улова.

Мне нужно знать, в каком случае IOExceptionвозвращается ObjectMapper.

Чтобы скинуть JsonProcessingException, я уже нашел ответ

Но я не нашел никаких сценариев, которые выдают IOException.

 protected void logJsonForMetrics(final Logger logger,
                                     final Object object)
    {
        try
        {
            final String jsonString = new ObjectMapper().writeValueAsString(object);
            logger.info(jsonString);
        }
        catch (final JsonProcessingException e)
        {
            LOGGER.error("Unable to create a json object" + e);
        }
        catch (final IOExcepton e)
        {
            LOGGER.error("Error while logging metric " + e);
        }
    }

Я хочу сценарий, который возвращает IOException.

Автор: Mahadevan Arun Источник Размещён: 11.08.2019 06:38

Ответы (2)


0 плюса

7168 Репутация автора

Это writeValueAsString(), скорее всего , не бросаться , IOExceptionпотому что использовать Внутренне , StringWriterчтобы записать значение. Из документации :

[...] Функционально эквивалентно вызову writeValue(Writer,Object)с StringWriterи построения строки [...]

Если вы хотите проверить IOExceptions, вам нужно writeValue()вместо этого использовать метод и предоставить Writerобъект, который будет выбрасывать IOException.

Имейте в виду, что IOExceptionоператор «throws» был удален с writeValueAsString()версии 2.1 (скорее всего, потому что это исключение больше не выбрасывается).

Автор: Progman Размещён: 11.08.2019 08:58

0 плюса

54 Репутация автора

Примечание: до версии 2.1 для jackson-databind, предложение writeValueAsString()метода throws включало IOException; 2.1 убрал его.

Автор: yuen26 Размещён: 11.08.2019 09:02
Вопросы из категории :
32x32