Название объясняет мой вопрос 100%. Предположим, что в Spring Boot/MVC указан аннотированный класс @ControllerAdvice
. В моем случае он содержит @ExceptionHandler
аннотации. Хорошо, я могу выполнить unit-тест этого класса (он возвращает форматированный JSON с информацией из класса Exception). Это легко - особенно при использовании Spock.Как сделать интеграционные тесты в Spring Controller Advice
Но как насчет интеграционных тестов? Единственный способ проверить правильность использования библиотеки Spring - создать контроллер, который существует только для целей тестирования, добавить к нему некоторые методы, например. исключить конкретный вид и посмотреть, вернет ли он то, что я разработал, чтобы вернуть. Но кажется уродливым - создание дополнительного кода только для тестирования существующего кода.
Так что мои вопросы - как вы проводите интеграционные тесты на @ControllerAdvice
? Вы просто этого не делаете, создайте специальный контроллер только для тестирования @ControllerAdvice
или просто протестируйте его с помощью существующего контроллера, предоставляя его, например, с неправильными данными, что приведет к тому, что будет выбрано исключение (в моем случае, если это было @InitBinder
методов, мы проверим ModelAndView
)?
Я знаю это, но в вашем решении есть контроллер. И мой вопрос: должен ли я создавать отдельный контроллер для тестирования классов @ControllerAdvice или использовать существующие? – Chlebik
Я бы не создавал новый контроллер только для тестирования рекомендаций, почему бы не использовать существующие? Таким образом, вы можете проверить рекомендации с фактическим потоком, предназначенным для работы в приложении. –
Давайте просто предположим, что я хочу проверить обработчик для ValidationException. Единственное место в моем приложении - это когда я пытаюсь получить доступ к внешней системе, получить некоторые данные, затем создать объект и проверить его. Это делается в основном в бобах '@ Service'. Итак, как вы предлагаете моделировать такую ситуацию с использованием существующих контроллеров во время тестирования интеграции? – Chlebik