Spring WS Integration Test Полезная нагрузка SoapEnvelopeMessageCreator пустая, но присутствует в PayloadMessageCreator - PullRequest
0 голосов
/ 26 октября 2018

Мне требуется протестировать Soap-сервер с указанным SoapAction и Message.

public class SoapActionCreator implements RequestCreator {

private final Source payload;
private final String soapAction;

public SoapActionCreator(Source payload, String soapAction) {
    this.payload = payload;
    this.soapAction = soapAction;
}

@Override
public WebServiceMessage createRequest(WebServiceMessageFactory webServiceMessageFactory) throws IOException {
    WebServiceMessage webServiceMessage =
            new SoapEnvelopeMessageCreator(payload).createMessage(webServiceMessageFactory);

    SoapMessage soapMessage = (SoapMessage) webServiceMessage;
    soapMessage.setSoapAction(soapAction);

    return webServiceMessage;
}

}

В методе теста:

mockClient = MockWebServiceClient.createClient(applicationContext);
Source requestPayload = new StringSource(
        "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\r\n"
        + "  <soap:Body>\r\n" + */"    <Login xmlns=\"http://www.nightfreight.com/webservices\">\r\n"
        + "      <username>local_user</username>\r\n"
        + "    </Login>\r\n"
        + "  </soap:Body>\r\n" + "</soap:Envelope>");

mockClient.sendRequest(new SoapActionCreator(requestPayload, 
soapAction)).andExpect.....

Получение исключения NullPointerException при вызове TestMethod, поскольку параметр Payload (параметр, отмеченный @RequestPayload в вызове метода)ноль.При перехвате: messageContext.getRequest (). GetPayloadSource () имеет значение «null»

Но при фактическом вызове SoapService: messageContext.getRequest (). GetPayloadSource () - это javax.xml.transform.dom.DOMSource @1237e0be

Если я использую PayloadMessageCreator вместо SoapEnvelopeMessageCreator после удаления части сообщения в виде мыльного конверта, это снова работает.Мне потребуется иметь собственное пространство имен, а также заголовки, и, следовательно, PayloadMessageCreator в этом случае не будет полезен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...