Насмешливая реакция конечной точки у верблюда - PullRequest
0 голосов
/ 24 октября 2018

У меня есть верблюжий маршрут, который отправляет loadbalancer и обрабатывает ответ.Можно ли как-то посмеяться над этим ответом в модульном тесте?Я пытался использовать скорость, но она не работает в модульных тестах.

1 Ответ

0 голосов
/ 24 октября 2018

Apache уже отвечает за такие требования к тестированию.Существует конструкция adviceWith , которая решит эту проблему.

Цитирование примера напрямую с несколькими изменениями по ссылке, указанной выше:

 @Test
 public void testAdvised() throws Exception {
     context.addRoutes(new RouteBuilder() {
         @Override public void configure() throws Exception {
            from("direct:start").id("my-route").to("mock:foo");
         }
    });

    context.getRouteDefinition("my-route").adviceWith(context, new RouteBuilder() {
      @Override
      public void configure() throws Exception {
      // intercept sending to mock:foo and do something else
      interceptSendToEndpoint("mock:foo")
          .skipSendToOriginalEndpoint()
          .to("log:foo")
          .to("mock:result");
      }
    });

    getMockEndpoint("mock:foo").expectedMessageCount(0);
    getMockEndpoint("mock:result").expectedMessageCount(1);

    template.sendBody("direct:start", "Hello World");

    assertMockEndpointsSatisfied();
}

Теперь здесь определен маршруткак: from("direct:start").id("my-route").to("mock:foo");

И, скажем, мы хотим высмеять здесь часть to.

Это именно то, что я и делаю:

context.getRouteDefinition("my-route").adviceWith(context, new RouteBuilder() {
      @Override
      public void configure() throws Exception {
      // intercept sending to mock:foo and do something else
      interceptSendToEndpoint("mock:foo")
          .skipSendToOriginalEndpoint()
          .to("log:foo")
          .to("mock:result");
      }
    });

Мы получаемссылка на определение маршрута, которую мы хотим изменить из CamelContext, и используя метод adviceWithith, мы можем определить, какие действия нужно выполнить.Как и здесь, я посоветовал не отправлять в фактический пункт назначения, т.е. mock:foo, а отправлять по двум другим маршрутам log:foo и mock:result.

Надеюсь, он отвечает на ваш запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...