问题-JUNIT验证信息已添加到骆驼路线标头

时间:2018-10-29 02:08:47

标签: junit routes apache-camel

我有一个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 :(得分:1)

如果您尝试检索在“初始化程序”路由上设置的标头,则可以通过作为响应收到的“ Exchange”对象来实现。

例如:

exchange.getOut().getHeaders();

或者:

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

您可以在此处找到更多信息:http://camel.apache.org/using-getin-or-getout-methods-on-exchange.html

但是,如果您要检查路由内标头的内容,则可以使用Camel简单表达语言。 (http://camel.apache.org/simple.html

希望对您有帮助。


更新后的答案

可能您可以使用ProducerTemplate.send()方法,并通过ExchangePattern将Exchange设置为“ InOut”。例如:

@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...
}

希望对您有帮助。