我有一个复杂的Camel集成测试,目前在2个路由上运行良好。所有AdviceWith都运行良好,并成功模拟了.to()端点。但是,当添加一个新的AdviceWith以便在新路由中模拟to()时,测试打开了一个连接,而不是将消息重定向到mockEndpoint。AdviceWith如下所示:
AdviceWithRouteBuilder.adviceWith(camelContext, CREATE_PERSON_ROUTE_ID, route ->
route.weaveById(CREATE_PERSON_ENDPOINT).replace().to(mockCreatePersonEndpointUri));
此相同格式适用于其他路由,例如:
AdviceWithRouteBuilder.adviceWith(camelContext, QUARANTINE_RECORD_PERSON_ROUTE_ID, route ->
route.weaveById(PERSON_QUARANTINE_RECORD_ENDPOINT).replace().to(mockPersonQuarantineRecordEndpointUri));
出现此问题的 Camel 线:
.to(housingEndpoint).id(CREATE_PERSON_ENDPOINT)
有问题的端点:
Endpoint housingEndpoint = HousingRestAPIEndpoint.getHousingRestAPIEndpoint(getContext());
请参见测试设置:
mockCreatePersonEndpoint = camelContext.getEndpoint(mockCreatePersonEndpointUri, MockEndpoint.class);
我想知道这是否是一个bug,因为正如所述,完全相同的配置可以用于其他带有模拟端点的路由。此外,如果我将测试代码提取到它自己的类中,AdviceWith的行为将与预期一致。欢迎提出任何想法。谢谢
1条答案
按热度按时间gkl3eglg1#
这个问题现在已经解决了,问题是我在测试类和被测试的代码中初始化了一个新的CamelContext,导致AdviceWith实际上模拟了一个没有使用的路由。