骆驼:模拟处理器以测试路线



我正在尝试为路由创建一个单元测试。我有以下路由配置

from ("direct:getA")
    .routeId("get-a").startupOrder(1)
    .process(exchange -> {
        QueryObject queryObject = exchange.getIn().getBody(QueryObject.class);
        exchange.getIn().setHeader(foo, queryObject.getH());
        exchange.setOut(exchange.getIn());
    })
    .choice()
        .when(header(foo).isEqualTo(fooConstant.bar))
            .process("barProcessor")
        .when(header(foo).isEqualTo(fooConstant.bie))
            .process("bieProcessor")
    .end();

我的问题是,我如何嘲笑" Barpropersess"one_answers" Bieprocessor"?

我尝试使用建议,但我无法检索路由定义。context.getRoutedEfinitions()返回一个空列表。

编辑:以下是我的测试中的代码段。

RouteDefinition routeDef = context.getRouteDefinition("get-a");
routeDef.adviceWith(context, new AdviceWithRouteBuilder() {
        @Override
        public void configure() throws Exception {
            interceptSendToEndpoint("*barProcessor*").process(
                    new Processor() {
                        @Override
                        public void process(Exchange exchange) {
                            System.out.println("bar");
                        }
                    }
            );
            interceptSendToEndpoint("*bieProcessor*").process(
                    new Processor() {
                        @Override
                        public void process(Exchange exchange) {
                            System.out.println("Bie");
                        }
                    }
            );
        }
    });
String request = <JSON Request>;
websocket.sendTest(request);

但是context.getRouteDefinition("get-a");返回null。当我也使用context.getRouteDefinitions()时,它返回一个空列表。

我发现了这个问题的原因。我忘了覆盖createroutebuilder并创建Jndicontext。

@Override
protected RouteBuilder createRouteBuilder() {
    return new SampleRoute(<param>);
}
@Override
protected JndiContext createJndiContext() throws Exception {
    JndiContext context = new JndiContext();
    context.bind("barProcessor", new BarProcessor());
    context.bind("bieProcessor", new BieProcessor());
    return context;
}

我从此链接找到了解决方案:单位测试

相关内容

  • 没有找到相关文章

最新更新