――Es gibt viele wundervolle Artikel, also schauen Sie sie sich bitte an. - https://qiita.com/kazuki43zoo/items/fa9fea1c813f76080fe7 - https://qiita.com/yoshidasts/items/fd4e1f4434e3b6f40880
Ich werde den Code hier als Beispiel belassen.
Es ist möglich, die URL, Anforderungsinhalte, Header und Methoden, die aufgerufen werden sollen, mit "MockRestServiceServer" festzulegen. Wenn der Aufruf nicht korrekt erfolgt, erhalten Sie "java.lang.AssertionError".
Mit "MockRestServiceServer.createServer" erstellt, können Sie mit "andExpect" den Inhalt, die Header usw. der Anforderung detailliert festlegen.
Alle hier festgelegten Inhalte von andExpect
sind die von 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() {
//Antwort zurückgegeben
String jsonResponseBody = "{\"id\": 99999,\"name\": \"exampleUser\"}";
//Voraussichtliches Ergebnis
User expectUser = new User() {{
setId(99999);
setName("exampleUser");
}};
//Erwartete URL zum Aufrufen
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));
//Bereit zum Anrufen
URI url = UriComponentsBuilder.fromHttpUrl(callEndpoint).build().toUri();
HttpHeaders headers = new HttpHeaders();
//Wird tatsächlich mit restTemplate aufgerufen
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() {
//Antwort zurückgegeben
String jsonResponseBody = "{\"id\": 99999}";
//Erwarteter Anfragetext
String jsonRequestBody = "{\"name\":\"example man\",\"email\":\"[email protected]\",\"gender\":1}";
//Voraussichtliches Ergebnis
User expectUser = new User() {{
setId(99999);
}};
//URL zum Anrufen
String callEndpoint = "https://post-end-point-url";
// create MockRestServiceServer
MockRestServiceServer mockServer = MockRestServiceServer.createServer(restTemplate);
mockServer
.expect(requestTo(callEndpoint))
.andExpect(method(HttpMethod.POST))
//Überprüfung des Inhalts des Anforderungsheaders
.andExpect(content().string(jsonRequestBody))
.andRespond(withSuccess(jsonResponseBody, MediaType.APPLICATION_JSON_UTF8));
//Bereit zum Anrufen
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(){
//Antwort zurückgegeben
String jsonResponseBody = "";
//Erwarteter Anfragetext
String jsonRequestBody = "{\"name\":\"example man\",\"email\":\"[email protected]\",\"gender\":1}";
//URL zum Anrufen
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))
//Überprüfung des Inhalts des Anforderungsheaders
.andExpect(header("Authorization", exampleToken))
//Überprüfung des Inhalts des Anforderungskörpers
.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);
}};
//Wenn Header oder exampleRequest auf null zurückgegeben werden, wird es nicht korrekt aufgerufen, also Java.lang.AssertionError
restTemplate.exchange(url, HttpMethod.POST, new HttpEntity(exampleRequest, headers), User.class);
}
Recommended Posts