Почему моя контрольная точка Apache Camel не работает в тесте? - PullRequest
0 голосов
/ 29 октября 2018

Я хочу проверить мой верблюжий путь Apache. У меня тестовый класс:

public class RequestTest extends CamelTestSupport {
  @Override
  protected CamelContext createCamelContext() throws Exception {
    applicationContext = new ClassPathXmlApplicationContext("META-INF/spring/camel-context.xml");
    return applicationContext.getBean(CamelContext.class);
  }
  @Test
  public void testDeliveryPush() throws Exception {
    context.addRoutes(new RouteBuilder() {
      @Override
      public void configure() throws Exception {
        from("direct:start")
          .to("activemq:is2.request?requestTimeout=30s");    
        from("activemq:is2.messages")
          .to("mock:result");
      }
    });

    MockEndpoint endpoint = getMockEndpoint("mock:result");
    endpoint.setExpectedMessageCount(1);

    String req = "body";  
    String result = template.requestBodyAndHeader("direct:start", req, RequestProcessor.AGENT_ID, 1003, String.class);
    Thread.sleep(30000);
    endpoint.assertIsSatisfied();
  }
}

Не могу понять, почему тест не пройден, но в моей очереди activeMq есть сообщение. Почему сообщение не приходит в фиктивную конечную точку результата? Сообщение было в is2.messages enter image description here

Я получил: java.lang.AssertionError: mock://result Received message count. Expected: <1> but was: <0> Expected :<1> Actual :<0>

1 Ответ

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

Вы отправляете сообщения в одну очередь (is2.request), но прослушивает другую очередь (is2.messages). Это не может работать, второй маршрут, и, следовательно, конечная точка Mock никогда не получает сообщение. Или это опечатка в твоем вопросе?

А на твоем скриншоте нет сообщения. Очередь пуста. было сообщением (в очереди сообщений), но оно уже используется (сообщения в очереди).

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