Camel AdviceWith不模拟终结点

k7fdbhmy  于 2022-11-07  发布在  Apache
关注(0)|答案(1)|浏览(246)

我有一个复杂的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的行为将与预期一致。欢迎提出任何想法。谢谢

gkl3eglg

gkl3eglg1#

这个问题现在已经解决了,问题是我在测试类和被测试的代码中初始化了一个新的CamelContext,导致AdviceWith实际上模拟了一个没有使用的路由。

相关问题