也许是一个相当不常见的问题,但我想在JUnit设置方法中模拟某些Camel路线
@BeforeEach
void setUp() {
}
之前
@Override
public void configure() throws Exception {
}
被执行,这似乎是在 CamelContext 自动装配后发生的。
@Autowired
protected CamelContext camelContext;
我需要做什么,以防止 Camel 上下文自动启动,以便能够在设置方法中模拟我的路线并手动启动它?
@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();
...