问题-JUNIT验证添加到驼峰路由标头的信息

问题-JUNIT验证添加到驼峰路由标头的信息,junit,routes,apache-camel,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 obj

我有一个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...

}
@测试
public void TestInitializeErrorOuteparms()引发异常{
String request=loadFile(示例\u请求\u V1\u XML);
Map allHeaders=newhashmap();
Object Object=start.requestBody(端点URI,请求);
//用于检查路由标头是否正确的断言代码。。。
}
我的路线是这样的:

<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>

//查找/context/myFied/text()
我的请求/响应有效。但我想在我的回复中看到“myFieldHeader”上的信息集是否正确。我不知道如何取回它


提前谢谢你

如果您试图检索“初始值设定项”路由上的标题集,则可以通过作为响应接收的“Exchange”对象进行检索

例如:

exchange.getOut().getHeaders();
@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...
}
或:

您可以在此处找到更多信息:

但是,如果您想检查路由中头的内容,可以使用Camel简单表达式语言。()

我希望有帮助


更新的答案

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

exchange.getOut().getHeaders();
@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...
}

希望能有所帮助。

谢谢您的关注。我在其他测试中使用了exchange,但这次没有。在上面的例子中,对于我的TestInitializeErrorOuteparms()方法,如何检索交换?再次感谢。嗨,我已经用一个可能的解决方案更新了我的答案。