我想测试通过cxf端点消耗肥皂消息的路由。服务类是带有2个字符串参数的带有注释的(@WebService)接口。如何使用cxf端点消耗肥皂测试路由
我想测试路由,特别是由cxf创建的MessageContentList
的处理。
但是如何测试这样的路线? 我看到2个选项:
- 直接端点测试替代CXF端点,而是如何创建具有相同的形状真实消息路由contentlist?
- 使用真实路由并发送一个xml/soap消息给它,但是如何使用定义soap消息的接口创建这样一个方法?
还有其他的选择吗?
我想测试通过cxf端点消耗肥皂消息的路由。服务类是带有2个字符串参数的带有注释的(@WebService)接口。如何使用cxf端点消耗肥皂测试路由
我想测试路由,特别是由cxf创建的MessageContentList
的处理。
但是如何测试这样的路线? 我看到2个选项:
还有其他的选择吗?
为什么不使用真正的路由并创建一个使用ProducerTemplate向您的cxf端点发送交换的junit测试(使用CamelTestSupport)?
public class MyTestClass extends CamelTestSupport {
@Test
public void myTestMethod() {
Map<String, Object> headers = new HashMap<String, Object>();
headers.put("content-type","application/xml";
template.sendBodyAndHeaders("<real_cxf_endpoint_url>", "<test_xml_message>", headers);
}
}
在这里看到更多的信息:http://camel.apache.org/camel-test.html
@EndpointInject(uri = "direct:source")
protected Endpoint source;
@Produce
protected ProducerTemplate producer;
@Test
method() {
Exchange response = createAndSendMessage();
}
private Exchange createAndSendMessage() {
Exchange exchange = source.createExchange();
exchange.getIn().setBody(contentlist);
Exchange response = producer.send(source, exchange);
return response;
}
如果你想使用XML,在资源文件夹中创建XML输入文件,并将其设置为交换体。
exchange.getIn().setBody(requestXML);
的问题是什么类型的交流应该有,如何创建一个交换是类似于在实(一个xml SOAP消息不知何故转换为“MessageContentList”) 我不发出交流有一个例子xml。 – dermoritz
上面的代码将创建一个类似于真实消息中发送的交换的交换。但是,如果您想首先手动创建交换,请使用Exchange exchange = new DefaultExchange(new DefaultCamelContext())然后,您可以设置所需的任何标题/属性,并使用template.send(String URI,Exchange exchange)方法覆盖来调用网络服务。 –
请选择我的答案,并加注它,因为它回答了您原来提出的问题。 –