Может ли Spring Bean программно заменяться в загруженном SpringContext - PullRequest
2 голосов
/ 28 октября 2011

Я хочу написать интеграционный тест, но с одним небольшим ограничением. Я получил TimeSourceBean, который хочу макетировать. Этот TimeSourceBean используется несколько раз глубоко в приложении. (нет способа сделать это с помощью отражения)

Все сделано с помощью autowire.

Я думаю, что смогу загрузить в свой тест дополнительный XML с реализацией, которая мне нравится. см: здесь !

Но было бы здорово, если бы я мог создать свой фиктивный TimeSourceBean в самом тесте и зарегистрировать его (заменить оригинальный компонент) в контексте

=> поэтому перед тем, как начать тестирование, я создаю макет и регистрирую свой боб следующим образом:

context.registerBean (timeSourceBeanMockVersion);

Есть идеи, если это возможно?

1 Ответ

0 голосов
/ 28 октября 2011

Вы можете добавить другой компонент / класс, реализующий тот же интерфейс (надеюсь, вы используете их), и пометить этот другой класс компонента как @ Primary.

Но тогда вам нужно убедиться, что этот основной компонентзагружается только в тех тестовых случаях, которые вам нужны.

...