非常感谢如何从Junit测试类调用SpringWS端点intrceptor的任何代码示例。特别是关于如何准备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;
}
任何例子都会受到赞赏。
答案 0 :(得分:1)
可以通过实例化MessageContext
对象来创建DefaultMessageContext
。请求WebServiceMessage
可以使用测试支持类PayloadMessageCreator
创建,但这只出现在Spring-WS 2.x中。
端点对象可以是任何东西 - 它取决于你的拦截器对它做什么。如果它实际上没有使用它,那么你可以传入null
。
答案 1 :(得分:1)
我遇到了同样的问题,并且能够使用@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,因为我没有使用它作为拦截器的一部分。