我正在尝试为路由创建一个单元测试。我有以下路由配置
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;
}
我从此链接找到了解决方案:单位测试