java - Apache Camel 模拟端点

标签 java spring apache apache-camel

我最近开始研究 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/

相关文章:

java - 将 Spring @Async 放置在方法调用堆栈中的位置

java - 如何解决 BeanCreationException 错误?

python - Django/Apache/Mod_WSGI - 静态文件的 HTTP 404 错误

php - 将 *.htm 重定向到 *.php

java - 更改 HttpTransportFactory cxf 2.7.3

java - .length 函数始终返回 0

java - 如何在 java 中使用 Selenium Webdriver 计算下载文件大小、状态、剩余时间和传输率

java - 将数组拆分为两个数组

spring - 为什么spring boot不按顺序加载bean配置?

java - Camunda:如何将变量从父进程传递到子进程。 (由事件启动)