2011-03-29 25 views
4

JunitテストクラスからSpringWSエンドポイントイントラクラスターを呼び出す方法のコード例があれば分かります。特に、SOAPメッセージコンテキストとエンドポイントオブジェクトを準備する方法。コンテキスト内のSOAPメッセージには、カスタムSOAPヘッダーが含まれている必要があります。SpringWSエンドポイントインターセプタのJunitテスト

何か

public class MyInterceptorTest 

private static String "... my XML SOAP test message ..."; 

@Test 
public testMyInterceptor() { 
    myMessageContext = ... Build a MessageContext with the XML message string; 
    myEndPointObject = ... Build an endpoint object; 
    boolean result = MyInterceptorClass.handleRequest(myMessageContext, myEndPointObject); 
    ... Check results; 
} 

....のような任意の実施例は、理解されるであろう。

+0

どのバージョンのSpring-WS? – skaffman

+0

Spring-WS 2.0を使用するには、カスタムSOApヘッダーを使用してSOAPメッセージを作成する必要があります。それを保持するMessageContextを構築する方法の例を探しています。 – Dave1963

答えて

1

MessageContextは、DefaultMessageContextオブジェクトをインスタンス化することによって作成できます。リクエストWebServiceMessageは、テストサポートクラスPayloadMessageCreatorを使用して作成できますが、これはSpring-WS 2.xでのみ出現しました。

エンドポイントオブジェクトは何でもかまいません。エンドポイントオブジェクトは、インターセプタが何を行うかによって異なります。実際にそれを使用しない場合は、nullを渡すことができます。

0

私は同じ問題を抱え、@ skaffmanの提案を使って部分的に理解することができました。

基本的に、実際のデータでテストしたいカスタムEndpointInterceptorがありましたので、すべて正しいものがあることがわかりました。

spring-ws-testやその他のspring-ws依存関係をバージョン2.0以上にアップグレードする必要があります。私はPayloadMessageCreatorとは違うものを使ってしまいました。

final Source payload = new StreamSource(new StringReader(soapPayload)); 
SaajSoapMessageFactory saajSoapMessageFactory = new SaajSoapMessageFactory(MessageFactory.newInstance()); 
WebServiceMessage requestPayload = new SoapEnvelopeMessageCreator(payload).createMessage(saajSoapMessageFactory); 
MessageContext messageContext = new DefaultMessageContext(requestPayload, saajSoapMessageFactory); 

soapPayloadは、ソープエンベロープ全体の文字列の値です。これに似た

何か:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Header> 
     ...fill in your custom headers here 
    </soapenv:Header> 
    <soapenv:Body><someRequest>...</someRequest></soapenv:Body> 
</soapenv:Envelope> 

あなたは明らかにあなたの要求ペイロード、任意の名前空間だけでなく、カスタムヘッダに記入する必要があります。

私はインターセプターの一部として何もしていないので、エンドポイントオブジェクトをヌルに設定しました。

関連する問題