Как создать исключение в тесте Spring MVC из MockMultipartFile? - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь написать некоторые модульные тесты для контроллера весной MVC, и часть метода контроллера имеет следующий код:

        try {
            newProjectFile.setFileType(fileType);
            newProjectFile.setContent(BlobProxy.generateProxy(file.getInputStream(), file.getSize()));
        } catch (Exception e) {
            throw new BadUpdateException(e.getMessage());
        }

Я настроил MockMultipartFile в моем модуле test, и я хотел бы проверить исключительный случай здесь, чтобы я мог получить неверный ответ на запрос.

Я попытался настроить что-то вроде следующего:

unit test:

MockMultipartFile file = new MockMultipartFile("file", "receipts.zip", "application/zip", "".getBytes());

[...]

when(file.getInputStream()).thenThrow(IOException.class);

[...]

и я получаю следующую ошибку:

when() requires an argument which has to be 'a method call on a mock'.
For example:
    when(mock.getArticles()).thenReturn(articles);

Если я не могу использовать 'when' для MockMultipartFile, как если бы я использовал любой обычный объект-макет, а Mockito не позволяет вам mock stati c методы, как я могу получить исключение здесь?

Редактировать: как указано в комментариях, MockMultipartFile не из Mockito, следовательно, ошибка, упомянутая выше.

Вопрос на самом деле заключается в том, как вызвать исключение в блоке try / catch, который предположительно либо , сгенерировав IOException для file.getInputStream () или UnsupportedOperationException для BlobProxy.generateProxy ( ), так что мой метод вызывает исключение BadUpdateException.

1 Ответ

0 голосов
/ 25 марта 2020

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

            @Override
            public InputStream getInputStream() throws IOException {
                throw new IOException();
            }
        };

Это означает, что при попытке получить метод в блоке try / catch в методе контроллера возникает исключение InputStream из MockMultipartFile, и результатом является исключение BadUpdateException.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...