Class MockRestServiceServer
java.lang.Object
org.springframework.test.web.client.MockRestServiceServer
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
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic interface
Builder to create aMockRestServiceServer
. -
Method Summary
Modifier and TypeMethodDescriptionbindTo
(RestClient.Builder restClientBuilder) Return a builder for aMockRestServiceServer
that should be used to reply to the givenRestTemplate
.bindTo
(RestTemplate restTemplate) Return a builder for aMockRestServiceServer
that should be used to reply to the givenRestTemplate
.bindTo
(RestGatewaySupport restGatewaySupport) Return a builder for aMockRestServiceServer
that should be used to reply to the givenRestGatewaySupport
.static MockRestServiceServer
createServer
(RestTemplate restTemplate) A shortcut forbindTo(restTemplate).build()
.static MockRestServiceServer
createServer
(RestGatewaySupport restGateway) A shortcut forbindTo(restGateway).build()
.expect
(ExpectedCount count, RequestMatcher matcher) An alternative toexpect(RequestMatcher)
that also indicates how many times the request is expected to be executed.expect
(RequestMatcher matcher) Set up an expectation for a single HTTP request.void
reset()
Reset the internal state removing all expectations and recorded requests.void
verify()
Verify that all expected requests set up viaexpect(RequestMatcher)
were indeed performed.void
Variant ofverify()
that waits for up to the specified time for all expectations to be fulfilled.
-
Method Details
-
expect
Set up an expectation for a single HTTP request. The returnedResponseActions
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
An alternative toexpect(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 countmatcher
- request matcher- Returns:
- a representation of the expectation
- Since:
- 4.3
-
verify
public void verify()Verify that all expected requests set up viaexpect(RequestMatcher)
were indeed performed.- Throws:
AssertionError
- if not all expectations are met
-
verify
Variant ofverify()
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 expectations 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
public static MockRestServiceServer.MockRestServiceServerBuilder bindTo(RestClient.Builder restClientBuilder) Return a builder for aMockRestServiceServer
that should be used to reply to the givenRestTemplate
.- Since:
- 6.1
-
bindTo
Return a builder for aMockRestServiceServer
that should be used to reply to the givenRestTemplate
.- Since:
- 4.3
-
bindTo
public static MockRestServiceServer.MockRestServiceServerBuilder bindTo(RestGatewaySupport restGatewaySupport) Return a builder for aMockRestServiceServer
that should be used to reply to the givenRestGatewaySupport
.- Since:
- 4.3
-
createServer
A shortcut forbindTo(restTemplate).build()
.- Parameters:
restTemplate
- the RestTemplate to set up for mock testing- Returns:
- the mock server
-
createServer
A shortcut forbindTo(restGateway).build()
.- Parameters:
restGateway
- the REST gateway to set up for mock testing- Returns:
- the created mock server
-