我最近开始研究 Apache Camel,但我遇到了一个问题。
我开始为我的路线编写一些测试,并且有很多示例,其中路线的“to”部分写为
<route id="person-add-route">
<from uri="direct:start"/>
<to uri="mock:result"/>
</route>
所以,我写了一个测试,我希望将模拟:结果作为最后一个端点。
@Test
@DirtiesContext
public void testCamel() throws Exception {
// Given
Object body = "body";
int messageCount = 1;
MockEndpoint endpoint = getMockEndpoint("mock:result");
// When
template.sendBody("direct:start", body);
// Then
endpoint.expectedMessageCount(messageCount);
endpoint.assertIsSatisfied();
}
以下是问题:写这个重要吗模拟:结果 如果我想测试我的路线?
最佳答案
您不需要在生产中包含“mock:result”,有多种方法可以测试您的路线。一是落实isMockEndpoints
在您的 Camel 测试中:
@Override
public String isMockEndpoints()
{
return "*";
}
所以如果你的路线是这样的:
<route id="person-add-route">
<from uri="direct:start"/>
<to uri="direct:result"/>
</route>
您可以像这样检查 MockEndpoint:
MockEndpoint endpoint = getMockEndpoint("mock:direct:result");
您也可以使用 AdviceWith在测试时修改你的路线,通过做这样的事情:
context.getRouteDefinitions().get(0).adviceWith(context, new AdviceWithRouteBuilder() {
@Override
public void configure() throws Exception
{
weaveAddLast().to("mock:result");
}
});
此外,正如 Claus 在他的评论中提到的,确保在将消息发送到路由之前设置您的期望。
关于java - Apache Camel 模拟端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27253757/