私は実際のcxfrsルートを持っています。私はjsonオブジェクトでSoapUiを使って残りのサービスを打つことができ、応答を得ることができます。apache camel cxfrsルートの単体テスト方法は?
私はユニットテストを書いていましたが、私はCamelTestSupportを使用しました。マイroutebuilderのconfigure()メソッドは、このようなものになります。私は、適切なJSON文字列とPOSTとしてSOAPUI(http://localhost:8181/cxf/myContext/submitRequest)からURLをヒットすると
from(cxfrsEndpoint)
.recipientList(simple("direct:${header.operationName}"))
.setHeader(Exchange.CONTENT_LENGTH, simple("-1"));
from("direct:submitRequest")
.bean("responseBean", "checkJson")
.bean("responseBean", "createSuccessResponse");
を、私は戻って「成功」JSONを取得します。クール。私が実行したとき、
@Test
public void thisIsATest() throws Exception {
MyRequest myRequest = new MyRequest();
request.setSomeProperty("Some property value");
ObjectMapper objectMapper = new ObjectMapper();
String goodJsonRequest = objectMapper.writeValueAsString(request);
String response = (String) template.requestBodyAndHeader(START_POINT, goodJsonRequest, "operationName", "submitRequest");
assertNotNull(response);
//Omitted: further assertions for content of the response json
}
まあ:
@Override
protected RouteBuilder createRouteBuilder() {
MyRouteBuilder myRouteBuilder = new MyRouteBuilder();
myRouteBuilder.setCxfrsEndpoint("direct:start");
return myRouteBuilder;
}
そして、私のユニットテスト(私は思った)のようになります。私のユニットテストで
は、私がオーバーライドさcreateRouteBuilderメソッドを作成しましたユニットテストでは、原因としてアンマーシャリング例外が発生します。Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '{' (code 123) in prolog; expected '<'
at [row,col {unknown-source}]: [1,1]
at com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:647)
at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2054)
at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1131)
at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:164)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:415)
... 74 more
私のjsonの文字列のようにesn't。実際のサービスは何を受け取っていますか?実際のルート上
、私はこのようなblueprint.xmlでエンドポイントにログインする有効:
私は、ログに表示JSON文字列「ペイロード:」何が違うのを見ていないが私はtemplate.requestBodyAndHeader(...)を介して送信しているJSON文字列よりも。
ここで何が間違っているのですか、何が間違っていますか?
ありがとうございます!
エンドポイントがペイロードがJSONではなくXMLリクエストとして送信されることを期待しているようです。 'myRouteBuilder.setCxfrsEndpoint(" direct:start ");'でエンドポイントをオーバーライドすると、ルートの予想方法が変更されます。 –
詳細が必要な場合は、回答として公開することがあります。 –