2016-11-11 4 views
1

Я пишу интеграционный тест для моей веб-службы Spring Boot и должен сместить инъекцию Bean (это в действительности объект Kafka Consumer в этом случае) с тестовой реализацией.Как переопределить приложение Bean в SpringBootTest

Раньше было просто предоставить XML-файл для определения альтернативной реализации или конфигурации компонента, но теперь мы используем конфигурацию Spring Boot и Java с аннотациями.

Я боролся за плохо написанную документацию Spring-Boot и не могу заставить работать. Документация Spring была написана с предпосылкой, что читатель уже знает все, что нужно знать о Spring Boot, и поэтому практически бесполезно.

Извините, у меня нет кода для обмена, потому что я пробовал все возможные решения, и никто из них не работает. Я ищу пример для примера лучшей практики ...

ОБНОВЛЕНИЕ: Я уверен, что нашел ошибку весной. Мои попытки переопределить компонент для одного тестового класса не соблюдались, когда класс тестирования был запущен после предыдущего тестового класса, несмотря на вызов вызываемого метода инициализатора компонента! Я подозреваю, что первый компонент по-прежнему передавался в веб-приложение, несмотря на его перезапуск.

ответ

0

Достаточно для вас было бы издеваться над вами - тогда вы должны посмотреть на @MockBean - см. http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html#boot-features-testing-spring-boot-applications-mocking-beans.

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