――Il existe de nombreux articles merveilleux, veuillez donc les consulter. - https://qiita.com/kazuki43zoo/items/fa9fea1c813f76080fe7 - https://qiita.com/yoshidasts/items/fd4e1f4434e3b6f40880
Je vais laisser le code ici à titre d'exemple.
Il est possible de définir l'URL, le contenu de la requête, les en-têtes et les méthodes qui doivent être appelés en utilisant MockRestServiceServer
.
Si l'appel n'est pas effectué correctement, vous obtiendrez java.lang.AssertionError
.
Il peut être créé avec MockRestServiceServer.createServer
, et le contenu de la requête, les en-têtes, etc. peuvent être définis en détail en utilisant ʻandExpect. Tout le contenu de ʻandExpect
défini ici est celui de ʻ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() {
//Réponse retournée
String jsonResponseBody = "{\"id\": 99999,\"name\": \"exampleUser\"}";
//Résultat prospectif
User expectUser = new User() {{
setId(99999);
setName("exampleUser");
}};
//URL à appeler attendue
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));
//Prêt à appeler
URI url = UriComponentsBuilder.fromHttpUrl(callEndpoint).build().toUri();
HttpHeaders headers = new HttpHeaders();
//En fait appelé avec 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() {
//Réponse retournée
String jsonResponseBody = "{\"id\": 99999}";
//Corps de demande attendu
String jsonRequestBody = "{\"name\":\"example man\",\"email\":\"[email protected]\",\"gender\":1}";
//Résultat prospectif
User expectUser = new User() {{
setId(99999);
}};
//URL à appeler
String callEndpoint = "https://post-end-point-url";
// create MockRestServiceServer
MockRestServiceServer mockServer = MockRestServiceServer.createServer(restTemplate);
mockServer
.expect(requestTo(callEndpoint))
.andExpect(method(HttpMethod.POST))
//Vérification du contenu de l'en-tête de la demande
.andExpect(content().string(jsonRequestBody))
.andRespond(withSuccess(jsonResponseBody, MediaType.APPLICATION_JSON_UTF8));
//Prêt à appeler
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(){
//Réponse retournée
String jsonResponseBody = "";
//Corps de demande attendu
String jsonRequestBody = "{\"name\":\"example man\",\"email\":\"[email protected]\",\"gender\":1}";
//URL à appeler
String callEndpoint = "https://put-end-point-url";
//entête
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))
//Vérification du contenu de l'en-tête de la demande
.andExpect(header("Authorization", exampleToken))
//Vérification du contenu du corps de la demande
.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);
}};
//Si headers ou exampleRequest est retourné à null, il n'est pas appelé correctement, donc java.lang.AssertionError
restTemplate.exchange(url, HttpMethod.POST, new HttpEntity(exampleRequest, headers), User.class);
}
Recommended Posts