我想对在java中使用bean配置的单个路由进行单元测试。我在骆驼的行动中读到(第6.1.4章)如何做到这一点:
protected RouteBuilder createRouteBuilder() throws Exception {
return new myRoute();
}
但在我的情况下,溃败需要注册一些bean。我知道如何在独立应用程序中注册bean:see here 但是如何在“CamelTestSupport”中注册bean?有没有办法在没有注册表的情况下使用bean?可能通过注入它们(所有bean都没有arg构造函数)?我正在使用Guice,在我的测试中,我正在使用Jukito(Guice + Mockito)。
答案 0 :(得分:7)
您需要覆盖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
}
答案 1 :(得分:2)
不,你不能在没有注册表的情况下使用bean。
您需要使用注册表来保存bean实例,否则Camel无法为您查找bean。如果您的测试类扩展了CamelTestSupport,您只需要覆盖createRegistry()方法以使用您的bean设置正确的注册表。