Тест Junit для пружины с перехватчиком конечной точки - PullRequest
4 голосов
/ 29 марта 2011

Буду признателен за любые примеры кода, как вызывать intrceptor конечной точки SpringWS из тестового класса Junit.В частности, о том, как подготовить контекст сообщения SOAP и объект конечной точки.В сообщении SOAP в контексте должен быть включен настраиваемый заголовок SOAP.

Что-то вроде ....

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;
}

Любые примеры приветствуются.

Ответы [ 2 ]

1 голос
/ 16 августа 2014

У меня была та же проблема, и я смог ее частично решить, используя предложение @ 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>

Вам, очевидно, потребуется заполнить полезную нагрузку вашего запроса, любые пространства имен, а также свои пользовательские заголовки.

Я установил для объекта конечной точки значение null, поскольку я ничего не делал с ним как частью моего перехватчика.

1 голос
/ 29 марта 2011

MessageContext может быть создан путем создания экземпляра объекта DefaultMessageContext.Запрос WebServiceMessage может быть создан с использованием класса поддержки теста PayloadMessageCreator, но он появился только в Spring-WS 2.x.

Объект конечной точки может быть любым - это зависит от того, что с ним делает ваш перехватчик.Если он на самом деле не использует его, тогда вы можете просто передать null.

...