org.springframework.test.web.client

Class MockRestServiceServer

  • java.lang.Object
    • org.springframework.test.web.client.MockRestServiceServer


  • public final class MockRestServiceServer
    extends java.lang.Object
    Main entry point for client-side REST testing. Used for tests that involve direct or indirect use of the RestTemplate. Provides a way to set up expected requests that will be performed through the RestTemplate as well as mock responses to send back thus removing the need for an actual server.

    Below is an example that assumes static imports from MockRestRequestMatchers, MockRestResponseCreators, and ExpectedCount:

     RestTemplate restTemplate = new RestTemplate()
     MockRestServiceServer server = MockRestServiceServer.bindTo(restTemplate).build();
    
     server.expect(manyTimes(), requestTo("/hotels/42")).andExpect(method(HttpMethod.GET))
         .andRespond(withSuccess("{ \"id\" : \"42\", \"name\" : \"Holiday Inn\"}", MediaType.APPLICATION_JSON));
    
     Hotel hotel = restTemplate.getForObject("/hotels/{id}", Hotel.class, 42);
     // Use the hotel instance...
    
     // Verify all expectations met
     server.verify();
     

    Note that as an alternative to the above you can also set the MockMvcClientHttpRequestFactory on a RestTemplate which allows executing requests against an instance of MockMvc.

    Since:
    3.2
    Author:
    Craig Walls, Rossen Stoyanchev
    • Method Detail

      • expect

        public ResponseActions expect(RequestMatcher matcher)
        Set up an expectation for a single HTTP request. The returned ResponseActions can be used to set up further expectations as well as to define the response.

        This method may be invoked any number times before starting to make request through the underlying RestTemplate in order to set up all expected requests.

        Parameters:
        matcher - request matcher
        Returns:
        a representation of the expectation
      • expect

        public ResponseActions expect(ExpectedCount count,
                                      RequestMatcher matcher)
        An alternative to expect(RequestMatcher) that also indicates how many times the request is expected to be executed.

        When request expectations have an expected count greater than one, only the first execution is expected to match the order of declaration. Subsequent request executions may be inserted anywhere thereafter.

        Parameters:
        count - the expected count
        matcher - request matcher
        Returns:
        a representation of the expectation
        Since:
        4.3
      • verify

        public void verify()
        Verify that all expected requests set up via expect(RequestMatcher) were indeed performed.
        Throws:
        java.lang.AssertionError - when some expectations were not met
      • reset

        public void reset()
        Reset the internal state removing all expectations and recorded requests.
      • createServer

        public static MockRestServiceServer createServer(RestTemplate restTemplate)
        A shortcut for bindTo(restTemplate).build().
        Parameters:
        restTemplate - the RestTemplate to set up for mock testing
        Returns:
        the mock server
      • createServer

        @Deprecated
        public static MockRestServiceServer createServer(AsyncRestTemplate asyncRestTemplate)
        Deprecated. see deprecation notice on AsyncRestTemplate itself
        A shortcut for bindTo(asyncRestTemplate).build().
        Parameters:
        asyncRestTemplate - the AsyncRestTemplate to set up for mock testing
        Returns:
        the created mock server
      • createServer

        public static MockRestServiceServer createServer(RestGatewaySupport restGateway)
        A shortcut for bindTo(restGateway).build().
        Parameters:
        restGateway - the REST gateway to set up for mock testing
        Returns:
        the created mock server