如何在CamelSpringBootTest中启动CamelContext之前模拟Apache Camel Route

问题描述 投票:0回答:2

也许是一个相当不常见的问题,但我想在JUnit设置方法中模拟某些Camel路线

@BeforeEach
void setUp() {
}

之前

@Override
public void configure() throws Exception {

}

被执行,这似乎是在 CamelContext 自动装配后发生的。

@Autowired protected CamelContext camelContext;

我需要做什么,以防止 Camel 上下文自动启动,以便能够在设置方法中模拟我的路线并手动启动它?

java spring-boot apache-camel spring-boot-test springmockito
2个回答
0
投票
您可以在单元测试中启用

advice with - 然后您需要手动启动Camel。

https://camel.apache.org/manual/advice-with.html#_enabling_advice_during_testing


0
投票
这篇文章很旧,但我不喜欢没有答案的问题。 所以声明一个 MockEnpoint 像这样:

@EndpointInject("mock:mockExampleQueue") MockEndpoint mockExampleQueue;
并将其添加到初始化时的路由中:

@BeforeAll void setUpClass() throws Exception { camelContext.addRoutes( new RouteBuilder() { @Override public void configure() { from("jms:queue:" + EXAMPLE_QUEUE) .to(mockExampleQueue); } }); .. }
EXAMPLE_QUEUE 是您想要观察的队列,并且您必须在代码中定义它。
比预期:

mockExampleQueue.setExpectedCount(2); mockExampleQueue.setResultWaitTime(20000);
并发送消息或采取任何措施让路线完成其预期的工作。
最后检查是否满足您的期望:

mockExampleQueue.assertIsSatisfied();
在可选步骤中,您可以检查更多详细信息:

List<Exchange> receivedExchanges = mockExampleQueue.getReceivedExchanges(); ...
    
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.