如何在CDI环境中模拟现有端点?

时间:2019-07-10 11:09:49

标签: java junit apache-camel cdi

我无法在模拟端点上断言。我在具有Java DSL路由的WildFly容器中使用JUnit和CDI注入。

  • 我创建一个扩展CamelTestSupport的测试类
  • 我注入了一个CamelContext字段,用于停止不同的组件并使用建议
  • 我设置了useadvicewith,因此上下文不会自行开始
  • 测试类继承了一个ModelCamelContext类型的上下文,该上下文似乎与我注入的CamelContext字段无关。
  • 所有路由都是在注入的CamelContext字段中创建的,而不是在继承的ModelCamelContext中创建的
  • 但是CamelTestSupport的整个模拟机制仅使用内部ModelCamel上下文

...所以无论我嘲笑什么,都不是我所建议的:),所有断言都理应会失败。

@RunWith(Arquillian.class)
public class MyTest extends CamelTestSupport {
  @Override
  public boolean isUseAdviceWith() {
    return true;
  }

  @Inject
  private CamelContext camelContext;

  @Test
  public void someTest() {
    camelContext.getRouteDefinition("routeid").adviceWith(camelContext,
      new AdviceWithRouteBuilder() {
        @Override
        public void configure () throws Exception {
          mockEndpoints();
        }
      });
    Collection list = context.getEndpoints(); // the ModelCamelContext is always empty, looks bad
    Collection list2 = camelContext.getEndpoints(); // has both route endpoints AND mocks, looks good
    getMockEndpoint("mock:someid").expectedMessageCount(1); // will always CREATE a new endpoint in the empty modelcamelcontext
    getMockEndpoint("mock:someid", false).expectedMessageCount(1); // will always crash, that endpoint ID is in the other context...

我会放弃注入的CamelContext,但是所有的路由都只在那创建,我不知道为什么。 CamelTestSupport的ModelCamelContext上下文始终为空...有些东西我初始化了不同/错误,但是我不能说什么。有人成功使用了Camel CDI模拟测试吗?

0 个答案:

没有答案