public class MockWebServiceClient extends Object
MessageDispatcher (including its endpoints, mappings, etc) by
creating request messages, and setting up expectations about response messages.
The typical usage of this class is:
MockWebServiceClient instance by using createClient(ApplicationContext) or
createClient(WebServiceMessageReceiver, WebServiceMessageFactory)sendRequest(RequestCreator), possibly by using the default
RequestCreator implementations provided in RequestCreators (which can be statically imported).andExpect(ResponseMatcher),
possibly by using the default ResponseMatcher implementations provided in ResponseMatchers
(which can be statically imported). Multiple expectations can be set up by chaining andExpect() calls.For example:
import org.junit.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.xml.transform.StringSource;
import org.springframework.ws.test.server.MockWebServiceClient;
import static org.springframework.ws.test.server.RequestCreators.*;
import static org.springframework.ws.test.server.ResponseMatchers.*;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("applicationContext.xml")
public class MyWebServiceIntegrationTest {
// a standard MessageDispatcherServlet application context, containing endpoints, mappings, etc.
@Autowired
private ApplicationContext applicationContext;
private MockWebServiceClient mockClient;
@Before
public void createClient() throws Exception {
mockClient = MockWebServiceClient.createClient(applicationContext);
}
// test the CustomerCountEndpoint, which is wired up in the application context above
// and handles <customerCount/> messages
@Test
public void customerCountEndpoint() throws Exception {
Source requestPayload = new StringSource(
"<customerCountRequest xmlns='http://springframework.org/spring-ws'>" +
"<customerName>John Doe</customerName>" +
"</customerCountRequest>");
Source expectedResponsePayload = new StringSource(
"<customerCountResponse xmlns='http://springframework.org/spring-ws'>" +
"<customerCount>42</customerCount>" +
"</customerCountResponse>");
mockClient.sendMessage(withPayload(requestPayload)).andExpect(payload(expectedResponsePayload));
}
}
| Modifier and Type | Method and Description |
|---|---|
static MockWebServiceClient |
createClient(ApplicationContext applicationContext)
Creates a
MockWebServiceClient instance based on the given ApplicationContext. |
static MockWebServiceClient |
createClient(WebServiceMessageReceiver messageReceiver,
WebServiceMessageFactory messageFactory)
Creates a
MockWebServiceClient instance based on the given WebServiceMessageReceiver and WebServiceMessageFactory. |
ResponseActions |
sendRequest(RequestCreator requestCreator)
Sends a request message by using the given
RequestCreator. |
public static MockWebServiceClient createClient(WebServiceMessageReceiver messageReceiver, WebServiceMessageFactory messageFactory)
MockWebServiceClient instance based on the given WebServiceMessageReceiver and WebServiceMessageFactory.messageReceiver - the message receiver, typically a SoapMessageDispatchermessageFactory - the message factorypublic static MockWebServiceClient createClient(ApplicationContext applicationContext)
MockWebServiceClient instance based on the given ApplicationContext.
This factory method works in a similar fashion as the standard
MessageDispatcherServlet. That is:
WebServiceMessageReceiver is configured in the given application context, it will use that.
If no message receiver is configured, it will create a default SoapMessageDispatcher.WebServiceMessageFactory is configured in the given application context, it will use that.
If no message factory is configured, it will create a default SaajSoapMessageFactory.applicationContext - the application context to base the client onpublic ResponseActions sendRequest(RequestCreator requestCreator)
RequestCreator. Typically called by using the default request
creators provided by RequestCreators.requestCreator - the request creatorRequestCreators