gpt4 book ai didi

java - Camel : Mock a processor to test Route

转载 作者:太空宇宙 更新时间:2023-11-04 10:52:02 26 4
gpt4 key购买 nike

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

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

我的问题是,如何模拟“barProcessor”和“bieProcessor”?

我尝试使用adviceWith,但无法检索routeDefinition。 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 和 createJndiContext。

@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;
}

我从这个链接找到了解决方案:Unit Test

关于java - Camel : Mock a processor to test Route,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47711476/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com