2016-11-18 149 views
1

我正在尝试使用http://camel.apache.org/mock.html为我的骆驼路由创建测试用例。我需要验证路由中的处理器。但简单的测试不适合我。骆驼测试 - java.lang.IllegalArgumentException:必须指定defaultEndpoint

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) 

回答

3

template.sendBody("Test")尝试发送Test到默认端点。就像你的代码一样,它没有配置它失败。

,你可以:

  • 指定使用

    template.sendBody("direct:start", "Test"); 
    
  • 从上下文得到一个端点并将其设置为默认的端点

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