2016-11-18 3 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"); 
     } 
    }; 
    } 
} 

StackTrace:

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"); 
    
Смежные вопросы