53 lines
2.1 KiB
Java
53 lines
2.1 KiB
Java
package com.ankurm.restclienttest;
|
|
|
|
import tools.jackson.databind.ObjectMapper;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.boot.restclient.test.autoconfigure.RestClientTest;
|
|
import org.springframework.http.MediaType;
|
|
import org.springframework.test.web.client.MockRestServiceServer;
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
|
|
import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
|
|
|
|
/**
|
|
* Same job, built on {@code RestTemplate} instead of {@code RestClient}.
|
|
* {@code @RestClientTest} auto-configures a {@code RestTemplateBuilder} too, so any
|
|
* {@code RestTemplate} built from it is wired through the same {@code MockRestServiceServer} -
|
|
* the mocking code below is identical to {@link RestClientEmployeeTest}'s, line for line.
|
|
*/
|
|
@RestClientTest(EmployeeTemplateClient.class)
|
|
class RestTemplateEmployeeTest {
|
|
|
|
@Autowired
|
|
private MockRestServiceServer mockServer;
|
|
|
|
@Autowired
|
|
private EmployeeTemplateClient employeeTemplateClient;
|
|
|
|
@Autowired
|
|
private ObjectMapper objectMapper;
|
|
|
|
@Test
|
|
void whenGetEmployeeById_thenReturnsEmployee() throws Exception {
|
|
Employee mockEmployee = new Employee(2, "Priya", "V", "[email protected]");
|
|
String employeeJson = objectMapper.writeValueAsString(mockEmployee);
|
|
|
|
mockServer.expect(requestTo("/employees/2"))
|
|
.andRespond(withSuccess(employeeJson, MediaType.APPLICATION_JSON));
|
|
|
|
Employee result = employeeTemplateClient.getEmployeeById(2);
|
|
|
|
assertThat(result).isNotNull();
|
|
assertThat(result.id()).isEqualTo(2);
|
|
assertThat(result.firstName()).isEqualTo("Priya");
|
|
|
|
mockServer.verify();
|
|
|
|
Capture.write("02-resttemplate-same-mocking-code.txt",
|
|
"RestTemplate-based EmployeeTemplateClient, identical MockRestServiceServer code",
|
|
"requestTo(\"/employees/2\") -> 200 OK " + employeeJson + "\nresult = " + result);
|
|
}
|
|
}
|