――There are many wonderful articles, so please check them out. - https://qiita.com/kazuki43zoo/items/fa9fea1c813f76080fe7 - https://qiita.com/yoshidasts/items/fd4e1f4434e3b6f40880
I will leave the code here as an example.
It is possible to set the URL, request contents, headers and methods that should be called by using MockRestServiceServer.
If the call is not made correctly, you will get java.lang.AssertionError.
Created with MockRestServiceServer.createServer, you can use ʻandExpect to set the request contents, headers, etc. in detail. All the contents of ʻandExpect set here are those of ʻorg.springframework.test.web.client.match.MockRestRequestMatchers`.
static import
example.java
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import static org.springframework.test.web.client.match.MockRestRequestMatchers.*;
import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
GET
example.java
@Test
public void GetExample() {
//Returned response
String jsonResponseBody = "{\"id\": 99999,\"name\": \"exampleUser\"}";
//Prospective result
User expectUser = new User() {{
setId(99999);
setName("exampleUser");
}};
//Expected URL to call
String callEndpoint = "https://get-end-point-url";
// create MockRestServiceServer
MockRestServiceServer mockServer = MockRestServiceServer.createServer(restTemplate);
mockServer
.expect(requestTo(callEndpoint))
.andExpect(method(HttpMethod.GET))
.andRespond(withSuccess(jsonResponseBody, MediaType.APPLICATION_JSON_UTF8));
//Ready to call
URI url = UriComponentsBuilder.fromHttpUrl(callEndpoint).build().toUri();
HttpHeaders headers = new HttpHeaders();
//Actually called with restTemplate
ResponseEntity<User> responseEntity = restTemplate.exchange(url, HttpMethod.GET, new HttpEntity(null, headers), User.class);
User responseUser = responseEntity.getBody();
assertThat(responseUser.getId(), is(expectUser.getId()));
assertThat(responseUser.getName(), is(expectUser.getName()));
}
POST
example.java
@Test
public void PostExample() {
//Returned response
String jsonResponseBody = "{\"id\": 99999}";
//Expected request body
String jsonRequestBody = "{\"name\":\"example man\",\"email\":\"[email protected]\",\"gender\":1}";
//Prospective result
User expectUser = new User() {{
setId(99999);
}};
//URL to call
String callEndpoint = "https://post-end-point-url";
// create MockRestServiceServer
MockRestServiceServer mockServer = MockRestServiceServer.createServer(restTemplate);
mockServer
.expect(requestTo(callEndpoint))
.andExpect(method(HttpMethod.POST))
//Verification of request header contents
.andExpect(content().string(jsonRequestBody))
.andRespond(withSuccess(jsonResponseBody, MediaType.APPLICATION_JSON_UTF8));
//Ready to call
URI url = UriComponentsBuilder.fromHttpUrl(callEndpoint).build().toUri();
HttpHeaders headers = new HttpHeaders();
// RequestBody
ExamplePostRequest exampleRequest = new ExamplePostRequest() {{
setName("example man");
setEmail("[email protected]");
setGender(MALE);
}};
ResponseEntity<User> responseEntity = restTemplate.exchange(url, HttpMethod.POST, new HttpEntity(exampleRequest, headers), User.class);
User responseUser = responseEntity.getBody();
assertThat(responseUser.getId(), is(expectUser.getId()));
}
PUT
example.java
@Test
public void PutExample(){
//Returned response
String jsonResponseBody = "";
//Expected request body
String jsonRequestBody = "{\"name\":\"example man\",\"email\":\"[email protected]\",\"gender\":1}";
//URL to call
String callEndpoint = "https://put-end-point-url";
//header
HttpHeaders headers = new HttpHeaders();
String exampleToken = String.format("Bearer %s", "EXAMPLE_BEARER_TOKEN");
headers.add("Authorization", exampleToken);
MockRestServiceServer mockServer = MockRestServiceServer.createServer(restTemplate);
mockServer
.expect(requestTo(callEndpoint))
.andExpect(method(HttpMethod.POST))
//Verification of request header contents
.andExpect(header("Authorization", exampleToken))
//Verification of request body contents
.andExpect(content().string(jsonRequestBody))
.andRespond(withSuccess(jsonResponseBody, MediaType.APPLICATION_JSON_UTF8));
URI url = UriComponentsBuilder.fromHttpUrl(callEndpoint).build().toUri();
// RequestBody
ExamplePostRequest exampleRequest = new ExamplePostRequest() {{
setName("example man");
setEmail("[email protected]");
setGender(MALE);
}};
//If headers or exampleRequest is returned to null, it is not called correctly, so java.lang.AssertionError
restTemplate.exchange(url, HttpMethod.POST, new HttpEntity(exampleRequest, headers), User.class);
}
Recommended Posts