Проблема - добавленная в заголовок маршрута Camel информация для проверки JUNIT - PullRequest
0 голосов
/ 29 октября 2018

У меня есть JUnit, который будет проверять мой маршрут инициализации. Это очень простой метод:

@Test
public void testInitializerRouteParams() throws Exception {

    String request = loadFile(SAMPLE_REQUEST_V1_XML);

    Map<String, Object> allHeaders = new HashMap<String, Object>();

    Object object = start.requestBody(ENDPOINT_URI, request);

    //assert code to check the route header is correct...

}

Мой маршрут выглядит примерно так:

<route id="initializer-route" startupOrder="92" shutdownRoute="Defer">
    <from uri="direct:initializer" />       
    <setHeader headerName="myFieldHeader">
        <xpath resultType="java.lang.String">//Find/context/myFied/text()</xpath>
    </setHeader>

    <!--other init info...-->           

</route>

Мой запрос / ответ работает. Но я хочу по своему ответу посмотреть, установлена ​​ли информация на «myFieldHeader». Я не уверен, как его найти.

Заранее спасибо!

1 Ответ

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

Если вы пытаетесь получить заголовок, заданный на вашем маршруте «инициализатора», вы можете сделать это через объект «Exchange», который вы получите в ответ.

Например:

exchange.getOut().getHeaders();

Или:

exchange.getOut().getHeader("myFieldHeader");

Вы можете найти больше информации здесь: http://camel.apache.org/using-getin-or-getout-methods-on-exchange.html

Но если вы хотите проверить содержимое заголовка внутри вашего маршрута, вы можете использовать Camel Simple Expression Language. (http://camel.apache.org/simple.html)

Надеюсь, это поможет.


Обновленный ответ

Возможно, вы могли бы использовать метод ProducerTemplate.send () и установить Exchange как «InOut» с ExchangePattern. Например:

@Test
public void testInitializerRouteParams() throws Exception {

    String body = loadFile(SAMPLE_REQUEST_V1_XML);

    Exchange exchange = ExchangeBuilder.anExchange(camelContext)
                                       .withBody(body)
                                       .withPattern(ExchangePattern.InOut)
                                       .build();

    Exchange response = start.send(ENDPOINT_URI, exchange);

    //assert code to check the route header is correct...
}

Надеюсь, это поможет.

...