Как программно добавить bean-компонент в webApplicationContext в тесте junit? - PullRequest
3 голосов
/ 06 января 2020

Я пытаюсь написать модульный тест для проверки фильтра в junit. У рассматриваемого фильтра есть метод init, который принимает объект filterConfig, использует его для получения WebApplicationContext, а затем вызывает getBeanAs в этом контексте, чтобы найти свойства, которые ему необходимо отфильтровать.

Мой модульный тест в настоящее время имеет webApplicationContext автоматическое подключение с использованием @WebAppConfiguration, которое я могу подключить к MockFilterConfig и перейти к методу init, пока что все хорошо.

Проблема в том, что в нашем реальном В приложении свойства, загруженные из WebApplicationContext, в конечном итоге считываются из mon go с помощью свойстваConfigurer. Я явно не хочу загружать вещи из mon go для тестов, поэтому я удалил propertyConfigurer из applicationContext, который я использую при генерации webApplicationContext.

Я мог бы вручную добавить каждое свойство в applicationContext, за исключением того, что я хотел бы иметь возможность изменять свойства, для которых инициализирован фильтр, для различных тестов.

Так есть ли способ, которым я могу программно добавить эти bean-компоненты в webApplicationContext после его автоматического подключения, так что я могу изменить то, что фильтр инициализирует на основе теста, который я пишу?

Я не собираюсь генерировать WebApplicationContext с помощью аннотации @webAppConfiguration, но мне не удалось найти хороший способ создания другого макета, отличного от ручного, который казался слишком хрупким, так как мне пришлось бы делать так много предположений о внутренней работе webApplicaitoncontext.

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