Het verkennen van de Spring Boot TestRestTemplate

1. Overzicht

Dit artikel gaat in op de Spring Boot TestRestTemplate. Het kan worden behandeld als een vervolg op The Guide to RestTemplate, dat we ten zeerste aanbevelen om te lezen voordat we ons concentreren op TestRestTemplate. TestRestTemplate kan worden beschouwd als een aantrekkelijk alternatief van RestTemplate.

2. Maven afhankelijkheden

Gebruiken TestRestTemplate, moet u een geschikte afhankelijkheid hebben, zoals:

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

U kunt de nieuwste versie vinden op Maven Central.

3. TestRestTemplate en RestTemplate

Beide clients zijn redelijk geschikt voor het schrijven van integratietests en kunnen zeer goed communiceren met HTTP API's.

Ze bieden ons bijvoorbeeld dezelfde methoden, standaardmethoden, headers en andere HTTP-constructies.

En al deze bewerkingen worden goed beschreven in The Guide to RestTemplate, dus we zullen ze hier niet opnieuw bezoeken.

Hier is een eenvoudig voorbeeld van een GET-verzoek:

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

Ondanks het feit dat beide klassen erg op elkaar lijken, TestRestTemplate strekt zich niet uit RestTemplate en biedt een aantal zeer opwindende nieuwe functies.

4. Wat is er nieuw in TestRestTemplate?

4.1. Constructor met basisverificatiegegevens

TestRestTemplate biedt een constructeur waarmee we kunnen maak een sjabloon met gespecificeerde inloggegevens voor basisverificatie.

Alle verzoeken die met deze instantie worden uitgevoerd, worden geverifieerd met de opgegeven inloggegevens:

TestRestTemplate testRestTemplate = nieuwe TestRestTemplate ("gebruiker", "passwd"); ResponseEntity-respons = testRestTemplate. getForEntity (URL_SECURED_BY_AUTHENTICATION, String.class); assertThat (response.getStatusCode (), equalTo (HttpStatus.OK));

4.2. Constructor Met HttpClientOption

TestRestTemplate stelt ons ook in staat om de onderliggende Apache HTTP-client aan te passen met behulp van de HttpClientOption welke is een opsomming in TestRestTemplate met de volgende opties: ENABLE_COOKIES, ENABLE_REDIRECTS, en SSL.

Laten we een snel voorbeeld bekijken:

TestRestTemplate testRestTemplate = nieuwe TestRestTemplate ("gebruiker", "passwd", TestRestTemplate.HttpClientOption.ENABLE_COOKIES); ResponseEntity-respons = testRestTemplate. getForEntity (URL_SECURED_BY_AUTHENTICATION, String.class); assertThat (response.getStatusCode (), equalTo (HttpStatus.OK))

In het bovenstaande voorbeeld gebruiken we de opties samen met basisverificatie.

Als we geen authenticatie nodig hebben, kunnen we nog steeds een sjabloon maken met een eenvoudige constructor:

TestRestTemplate (TestRestTemplate.HttpClientOption.ENABLE_COOKIES)

4.3. Nieuwe methode

Niet alleen kunnen constructeurs een sjabloon maken met gespecificeerde inloggegevens. We kunnen ook inloggegevens toevoegen nadat onze sjabloon is gemaakt. TestRestTemplate geeft ons een methode metBasicAuth () die inloggegevens toevoegt aan een reeds bestaande sjabloon:

TestRestTemplate testRestTemplate = nieuwe TestRestTemplate (); ResponseEntity response = testRestTemplate.withBasicAuth ("gebruiker", "passwd"). GetForEntity (URL_SECURED_BY_AUTHENTICATION, String.class); assertThat (response.getStatusCode (), equalTo (HttpStatus.OK));

5. Beide gebruiken TestRestTemplate en RestTemplate

TestRestTemplate kan als wikkel voor werken RestTemplate, b.v. als we het moeten gebruiken omdat we te maken hebben met legacy-code. Je kunt hieronder zien hoe je zo'n eenvoudige wrapper kunt maken:

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

6. Conclusie

TestRestTemplate is geen extensie van RestTemplate, maar eerder een alternatief dat integratietests vereenvoudigt en authenticatie tijdens tests vergemakkelijkt. Het helpt bij het aanpassen van de Apache HTTP-client, maar het kan ook worden gebruikt als een wrapper van RestTemplate.

Je kunt de voorbeelden in dit artikel bekijken op GitHub.


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