Как зарегистрировать бины в юнит-тестах верблюдов, которые используют бобы?
Я хочу, чтобы модульное тестирование отдельных маршрутов, настроенных в Java, который использует бины. Я прочитал на верблюде в действии (глава 6.1.4), как это сделать:
protected RouteBuilder createRouteBuilder() throws Exception {
return new myRoute();
}
Но в моем случае для маршрутизации требуются некоторые bean-компоненты. Я знаю, как зарегистрировать bean-компоненты в автономном приложении: см. Здесь. Но как зарегистрировать bean-компоненты в CamelTestSupport? Есть ли способ использовать бины без реестра? Возможно, вводя их (все бины не имеют конструкторов arg)? Я использую Guice и в своих тестах я использую Jukito (Guice+Mockito).
2 ответа
Вам нужно переопределить метод createRegistry(),
@Override
protected JndiRegistry createRegistry() throws Exception {
JndiRegistry jndi = super.createRegistry();
//use jndi.bind to bind your beans
return jndi;
}
@Test
public void test() {
//perform test
}
Нет, вы не можете использовать бины без реестра.
Вам нужно использовать реестр для хранения экземпляра bean, иначе Camel не сможет найти bean для вас. Вам просто нужно переопределить метод createRegistry() для настройки правильного реестра с вашими компонентами, если ваш тестовый класс расширяет CamelTestSupport.
Ответ, предоставленный @Matthew Wilson, больше не рекомендуется начинать с Camel 3.0.0.
Его решение все еще находится в стадии разработки, но детали реализации изменились. Я решил ввести это вsetUp
(пример находится в Kotlin, используйте подсказки IDE, чтобы создать то же самое на Java):
override fun setUp() {
super.setUp()
context.registry.bind("yourBean", YourBean())
}
Как видите, реестр по-прежнему задействован, но теперь вы можете получить его только из контекста. Я считаю более правильным хранить такие процедуры установки в удобном названном переопределяемом методеsetUp
. Только не забудьте вызвать родительскую версию.
Если есть место получше для таких процедур, дайте мне знать, чтобы я мог обновить ответ.
Документы: https://camel.apache.org/manual/latest/camel-3-migration-guide.html