繁体   English   中英

模拟Camel Endpoint POJO生产者的方法

[英]Ways to mock Camel Endpoint POJO producer

在这里遵循了指南,并且可以像这样在我的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端点中? 使用CamelTestSupport类的Apache Camel功能和类似实用程序测试这种情况的最佳方法是什么?

我的参考测试是:

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM