Class MockRestServiceServer

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

public final 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 Details

    • 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:
      AssertionError - if not all expectations are met
    • verify

      public void verify(Duration timeout)
      Variant of verify() that waits for up to the specified time for all expectations to be fulfilled. This can be useful for tests that involve asynchronous requests.
      Parameters:
      timeout - how long to wait for all expecations to be met
      Throws:
      AssertionError - if not all expectations are met by the specified timeout, or if any expectation fails at any time before that.
      Since:
      5.3.4
    • reset

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

      Return a builder for a MockRestServiceServer that should be used to reply to the given RestTemplate.
      Since:
      4.3
    • bindTo

      Return a builder for a MockRestServiceServer that should be used to reply to the given RestGatewaySupport.
      Since:
      4.3
    • 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(RestGatewaySupport restGateway)
      A shortcut for bindTo(restGateway).build().
      Parameters:
      restGateway - the REST gateway to set up for mock testing
      Returns:
      the created mock server