我有一个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”上设置了信息。我不确定如何获取它。
提前谢谢!
答案 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...
}
希望对您有帮助。