如何在Camel中对In-Out组件进行单元测试?

时间:2018-02-16 10:29:32

标签: junit apache-camel

我有一个路由设置,它将xml文档发送到第三方的Web服务,工作正常,但它是Fire-and-Forget,现在我需要更改它来存储xml响应和http代码。

示例回复是:<Success>TRUE</Success>

以下是我的路线示例

from("activemq:test_queue")
  .routeId("testRoute")
  .bean( generateTestXMLBean )
  .to( ExchangePattern.InOut, "http://www.example-webservice.com/xml" )
  .process( storeResponseProcessor )

是否有可能编写一个单元测试,在路由将HttpResponse发送到MockEndpoint后嘲笑HttpResponse,以便可以处理响应?

我还认为答案会成为交易所的Out消息吗?

非常感谢任何帮助:)

1 个答案:

答案 0 :(得分:0)

是的,您可以模拟HttpResponse。通常我喜欢使用另一条路线来“模拟”响应。例如:

from("activemq:test_queue")
  .routeId("testRoute")
  .bean( generateTestXMLBean )
  .to( ExchangePattern.InOut, "direct:response" )
  .process( storeResponseProcessor )

from("direct:response")
  .routeId("testResponse")
  .setBody(simple("<Success>TRUE</Success>"))

此外,您可以添加模拟端点。

from("direct:response")
  .routeId("testResponse")
  .to("mock:response")
  .setBody(simple("<Success>TRUE</Success>"))

是的,你是对的,用InOut交换模式设置请求Camel会在Out Message中设置内容。