【发布时间】:2015-12-10 09:29:52
【问题描述】:
我遵循指南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() { ... }
也就是说:我已经复制了骆驼上下文,但我没有配置弹簧上下文,我希望(如果可能)避免实例化它。
如何模拟生产者或让 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 {}
【问题讨论】:
-
如何创建您的
my bean?你需要一些依赖注入来注入那个监听器, -
嗨,是的,我通过 spring 上下文成功注入了这个 bean。我的问题是:我如何对它进行单元测试?有没有办法模拟这样的生产者,避免依赖注入并手动注入生产者模拟对象(这就是我正在寻找的)还是我必须实例化一个弹簧测试上下文来测试它?
-
你想要什么,将端点更改为不发送到activemq?
-
或多或少,我在问题中添加了我的测试代码。我会在 mock:out 上做出断言,因为只有在满足特定条件时我才会在 activemq:foo 上发布
标签: java apache-camel