Class MockRestServiceServer


  • public class MockRestServiceServer
    extends 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
      • 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

        public static MockRestServiceServer createServer​(AsyncRestTemplate asyncRestTemplate)
        A shortcut for bindTo(asyncRestTemplate).build().
        Parameters:
        asyncRestTemplate - the AsyncRestTemplate to set up for mock testing
        Returns:
        the created mock server