模拟 Camel Endpoint POJO 生产者的方法
Ways to mock Camel Endpoint POJO producer
我按照指南 here 进行操作,并且能够像这样在我的 bean 端点上成功配置生产者:
@Produce( uri = "activemq:foo" )
private MyListener myListener;
MyListener
是:
public interface MyListener {
@InOnly
public void send( String message );
}
还有我的豆子:
public class MyBeanEndpoint {
@Produce( uri = "activemq:foo" )
private MyListener myListener;
@Handler
public void doSomething( final Object body ) {
...
}
public void setMyListener( final MyListener myListener ) {
this.myListener = myListener;
}
现在,我该如何测试呢?
我的意思是:我的测试扩展了 CamelTestSupport
并且我用
配置了我的路由
@Override
public RouteBuilder createRouteBuilder() {
return new RouteBuilder() { ... }
也就是说:我已经复制了骆驼上下文,但是我没有配置 spring 上下文,我希望(如果可能的话)避免实例化它。
如何模拟生产者或让 Camel 实例化此 bean 并将其注入我的 bean 端点?
使用 Apache Camel 功能(如 CamelTestSupport
和类似实用程序)测试这种情况的最佳方法是什么?
我的参考测试是:
public class Test extends CamelTestSupport {
private static BeanEndpoint beanEndpoint
@BeforeClass
public static void init() {
beanEndpoint.setActivemqMyListener( ??? );
}
@Override
public CamelContext createCamelContext() {
context = new DefaultCamelContext();
context.addComponent( "activemq", new SedaComponent() );
return context;
}
@Override
public RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from( "activemq:foo" )
.to( "mock:out" );
}
};
}
@Test
public void testFooQueue() throws Exception {}
让 Camel 创建你的 bean,然后为你配置各种依赖注入等等。
private static BeanEndpoint beanEndpoint
...
beanEndpoint = camelContext.getInjector().newInstance(BeanEndpoint.class);
我按照指南 here 进行操作,并且能够像这样在我的 bean 端点上成功配置生产者:
@Produce( uri = "activemq:foo" )
private MyListener myListener;
MyListener
是:
public interface MyListener {
@InOnly
public void send( String message );
}
还有我的豆子:
public class MyBeanEndpoint {
@Produce( uri = "activemq:foo" )
private MyListener myListener;
@Handler
public void doSomething( final Object body ) {
...
}
public void setMyListener( final MyListener myListener ) {
this.myListener = myListener;
}
现在,我该如何测试呢?
我的意思是:我的测试扩展了 CamelTestSupport
并且我用
@Override
public RouteBuilder createRouteBuilder() {
return new RouteBuilder() { ... }
也就是说:我已经复制了骆驼上下文,但是我没有配置 spring 上下文,我希望(如果可能的话)避免实例化它。
如何模拟生产者或让 Camel 实例化此 bean 并将其注入我的 bean 端点?
使用 Apache Camel 功能(如 CamelTestSupport
和类似实用程序)测试这种情况的最佳方法是什么?
我的参考测试是:
public class Test extends CamelTestSupport {
private static BeanEndpoint beanEndpoint
@BeforeClass
public static void init() {
beanEndpoint.setActivemqMyListener( ??? );
}
@Override
public CamelContext createCamelContext() {
context = new DefaultCamelContext();
context.addComponent( "activemq", new SedaComponent() );
return context;
}
@Override
public RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from( "activemq:foo" )
.to( "mock:out" );
}
};
}
@Test
public void testFooQueue() throws Exception {}
让 Camel 创建你的 bean,然后为你配置各种依赖注入等等。
private static BeanEndpoint beanEndpoint
...
beanEndpoint = camelContext.getInjector().newInstance(BeanEndpoint.class);