我想測試通過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)方法覆蓋來調用網絡服務。 –
請選擇我的答案,並加註它,因爲它回答了您原來提出的問題。 –