Тестирование верблюда - java.lang.IllegalArgumentException: должна быть указана defaultEndpoint

Я пытаюсь создать тестовые сценарии для моего верблюжьего маршрута, используя http://camel.apache.org/mock.html. Мне нужно проверить процессоры на маршруте. Но простой тест не работает для меня.

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)

1 ответ

Решение

template.sendBody("Test") попробуйте отправить Test к конечной точке по умолчанию. Так как в вашем коде это не настроено, это не удастся.

Вы могли бы:

  • указать, какую конечную точку использовать

    template.sendBody("direct:start", "Test");
    
  • получить конечную точку из контекста и установить ее в качестве конечной точки по умолчанию

    Endpoint endpoint = context.getEndpoint("direct:start");
    template.setDefaultEndpoint(endpoint);
    template.sendBody("Test");
    
Другие вопросы по тегам