Udforsk Spring Boot TestRestTemplate

1. Oversigt

Denne artikel udforsker Spring Boot TestRestTemplate. Det kan behandles som en opfølgning af Vejledningen til RestTemplate, som vi kraftigt anbefaler at læse, før du fokuserer på TestRestTemplate. TestRestTemplate kan betragtes som et attraktivt alternativ til RestTemplate.

2. Maven-afhængigheder

At bruge TestRestTemplate, skal du have en passende afhængighed som:

 org.springframework.boot spring-boot-test 2.2.2.RELEASE 

Du kan finde den nyeste version på Maven Central.

3. TestRestTemplate og RestTemplate

Begge disse klienter er meget velegnede til at skrive integrationstest og kan håndtere kommunikation med HTTP API'er meget godt.

For eksempel giver de os de samme metoder standardmetoder, headere og andre HTTP-konstruktioner.

Og alle disse operationer er godt beskrevet i Vejledningen til RestTemplate, så vi besøger dem ikke her.

Her er et simpelt eksempel på GET-anmodning:

TestRestTemplate testRestTemplate = ny TestRestTemplate (); ResponseEntity respons = testRestTemplate. getForEntity (FOO_RESOURCE_URL + "/ 1", String.class); assertThat (respons.getStatusCode (), equalTo (HttpStatus.OK));

På trods af at begge klasser er meget ens, TestRestTemplate udvides ikke RestTemplate og tilbyder et par meget spændende nye funktioner.

4. Hvad er nyt i TestRestTemplate?

4.1. Konstruktør med grundlæggende godkendelsesoplysninger

TestRestTemplate giver en konstruktør, som vi kan Opret en skabelon med angivne legitimationsoplysninger til grundlæggende godkendelse.

Alle anmodninger, der udføres ved hjælp af denne forekomst, godkendes ved hjælp af de angivne legitimationsoplysninger:

TestRestTemplate testRestTemplate = ny TestRestTemplate ("bruger", "passwd"); ResponseEntity respons = testRestTemplate. getForEntity (URL_SECURED_BY_AUTHENTICATION, String.class); assertThat (respons.getStatusCode (), equalTo (HttpStatus.OK));

4.2. Konstruktør med HttpClientOption

TestRestTemplate giver os også mulighed for at tilpasse den underliggende Apache HTTP-klient ved hjælp af HttpClientOption som er en enum i TestRestTemplate med følgende muligheder: ENABLE_COOKIES, ENABLE_REDIRECTSog SSL.

Lad os se et hurtigt eksempel:

TestRestTemplate testRestTemplate = ny TestRestTemplate ("bruger", "passwd", TestRestTemplate.HttpClientOption.ENABLE_COOKIES); ResponseEntity respons = testRestTemplate. getForEntity (URL_SECURED_BY_AUTHENTICATION, String.class); assertThat (respons.getStatusCode (), equalTo (HttpStatus.OK))

I ovenstående eksempel bruger vi indstillingerne sammen med grundlæggende godkendelse.

Hvis vi ikke har brug for godkendelse, kan vi stadig oprette en skabelon med en simpel konstruktør:

TestRestTemplate (TestRestTemplate.HttpClientOption.ENABLE_COOKIES)

4.3. Ny metode

Ikke kun kan konstruktører oprette en skabelon med angivne legitimationsoplysninger. Vi kan også tilføje legitimationsoplysninger, når vores skabelon er oprettet. TestRestTemplate giver os en metode withBasicAuth () der tilføjer legitimationsoplysninger til en allerede eksisterende skabelon:

TestRestTemplate testRestTemplate = ny TestRestTemplate (); ResponseEntity respons = testRestTemplate.withBasicAuth ("bruger", "passwd"). GetForEntity (URL_SECURED_BY_AUTHENTICATION, String.class); assertThat (respons.getStatusCode (), equalTo (HttpStatus.OK));

5. Brug af begge dele TestRestTemplate og RestTemplate

TestRestTemplate kan fungere som en indpakning til RestTemplate, f.eks. hvis vi bliver tvunget til at bruge det, fordi vi har at gøre med ældre kode. Du kan se nedenfor, hvordan du opretter en sådan simpel indpakning:

RestTemplateBuilder restTemplateBuilder = ny RestTemplateBuilder (); restTemplateBuilder.configure (restTemplate); TestRestTemplate testRestTemplate = ny TestRestTemplate (restTemplateBuilder); ResponseEntity response = testRestTemplate.getForEntity (FOO_RESOURCE_URL + "/ 1", String.class); assertThat (respons.getStatusCode (), equalTo (HttpStatus.OK));

6. Konklusion

TestRestTemplate er ikke en udvidelse af RestTemplate, men snarere et alternativ, der forenkler integrationstest og letter godkendelse under test. Det hjælper med tilpasning af Apache HTTP-klient, men det kan også bruges som en indpakning af RestTemplate.

Du kan tjekke eksemplerne i denne artikel på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found