骆驼建议不模拟端点

Camel AdviceWith not mocking out Endpoint

我有一个复杂的 Camel 集成测试,目前在 2 条路线上运行良好。所有 AdviceWiths 都工作得很好,并成功地模拟了 .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));

出现该问题的驼线:

.to(housingEndpoint).id(CREATE_PERSON_ENDPOINT)

有问题的端点:

        Endpoint housingEndpoint = HousingRestAPIEndpoint.getHousingRestAPIEndpoint(getContext());

请查看测试设置:

        mockCreatePersonEndpoint = camelContext.getEndpoint(mockCreatePersonEndpointUri, MockEndpoint.class);

我想知道这是否是一个错误,因为如前所述,完全相同的配置适用于其他具有模拟端点的路由。此外,如果我将测试代码提取到它自己的 class 中,AdviceWith 的行为符合预期。欢迎任何想法。谢谢

现在已修复,问题是我在测试 class 和正在测试的代码中都初始化了一个新的 CamelContext,导致 AdviceWith 实质上模拟了一条未被使用的路由。