――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