gpt4 book ai didi

java - Camel 测试 - java.lang.IllegalArgumentException : defaultEndpoint must be specified

转载 作者:行者123 更新时间:2023-11-29 08:40:23 27 4
gpt4 key购买 nike

我正在尝试使用 http://camel.apache.org/mock.html 为我的 Camel 路线创建测试用例.我需要验证 route 的处理器。但是简单的测试对我不起作用。

public class CamelRouteTest  extends CamelTestSupport {

@Override
public String isMockEndpointsAndSkip() {
// override this method and return the pattern for which endpoints to mock,
// and skip sending to the original endpoint.
return "mock:result";
}

@Test
public void verifyMessageCount() throws Exception {
template.sendBody("Test");
getMockEndpoint("mock:result").expectedMessageCount(1);
assertMockEndpointsSatisfied();
}

@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from("direct:start").to("mock:result");
}
};
}
}

堆栈跟踪:

java.lang.IllegalArgumentException: defaultEndpoint must be specified
at org.apache.camel.util.ObjectHelper.notNull(ObjectHelper.java:308)
at org.apache.camel.impl.DefaultProducerTemplate.getMandatoryDefaultEndpoint(DefaultProducerTemplate.java:506)
at org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:370)

最佳答案

template.sendBody("Test") 尝试将 Test 发送到默认端点。由于在您的代码中未配置,因此失败。

你可以:

  • 指定要使用的端点

    template.sendBody("direct:start", "Test");
  • 从上下文中获取端点并将其设置为默认端点

    Endpoint endpoint = context.getEndpoint("direct:start");
    template.setDefaultEndpoint(endpoint);
    template.sendBody("Test");

关于java - Camel 测试 - java.lang.IllegalArgumentException : defaultEndpoint must be specified,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40677222/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com