Istražujući Spring Boot TestRestTemplate

1. Pregled

Ovaj članak istražuje Spring Boot TestRestTemplate. Može se tretirati kao nastavak Vodiča za RestTemplate, koji preporučujemo da pročitate prije nego što se usredotočite na TestRestTemplate. TestRestTemplate može se smatrati atraktivnom alternativom RestTemplate.

2. Ovisnosti Mavena

Koristiti TestRestTemplate, morate imati odgovarajuću ovisnost poput:

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

Najnoviju verziju možete pronaći na Maven Central.

3. TestRestTemplate i RestTemplate

Oba su klijenta prikladna za pisanje integracijskih testova i vrlo dobro se mogu nositi s komunikacijom s HTTP API-ima.

Na primjer, pružaju nam iste metode standardne metode, zaglavlja i druge HTTP konstrukcije.

I sve su ove operacije dobro opisane u Vodiču za RestTemplate, pa ih ovdje nećemo ponovno pregledavati.

Evo jednostavnog primjera GET zahtjeva:

TestRestTemplate testRestTemplate = novi TestRestTemplate (); ResponseEntity response = testRestTemplate. getForEntity (FOO_RESOURCE_URL + "/ 1", String.class); assertThat (response.getStatusCode (), jednakTo (HttpStatus.OK));

Unatoč činjenici da su oba razreda vrlo slična, TestRestTemplate ne proteže se RestTemplate i nudi nekoliko vrlo uzbudljivih novih značajki.

4. Što je novo u TestRestTemplate?

4.1. Konstruktor s osnovnim vjerodajnicama za autorizaciju

TestRestTemplate pruža konstruktor s kojim možemo stvoriti predložak s navedenim vjerodajnicama za osnovnu provjeru autentičnosti.

Svi zahtjevi izvršeni pomoću ove instance bit će ovjereni pomoću pruženih vjerodajnica:

TestRestTemplate testRestTemplate = novi TestRestTemplate ("korisnik", "passwd"); ResponseEntity response = testRestTemplate. getForEntity (URL_SECURED_BY_AUTHENTICATION, String.class); assertThat (response.getStatusCode (), jednakTo (HttpStatus.OK));

4.2. Konstruktor Sa HttpClientOption

TestRestTemplate također nam omogućuje prilagodbu osnovnog Apache HTTP klijenta pomoću HttpClientOption koja je nabrajanje u TestRestTemplate sa sljedećim opcijama: ENABLE_COOKIES, ENABLE_REDIRECTS, i SSL.

Pogledajmo brzi primjer:

TestRestTemplate testRestTemplate = novi TestRestTemplate ("korisnik", "passwd", TestRestTemplate.HttpClientOption.ENABLE_COOKIES); ResponseEntity response = testRestTemplate. getForEntity (URL_SECURED_BY_AUTHENTICATION, String.class); assertThat (response.getStatusCode (), jednakTo (HttpStatus.OK))

U gornjem primjeru koristimo opcije zajedno s osnovnom autentifikacijom.

Ako nam nije potrebna autentifikacija, još uvijek možemo stvoriti predložak s jednostavnim konstruktorom:

TestRestTemplate (TestRestTemplate.HttpClientOption.ENABLE_COOKIES)

4.3. Nova metoda

Konstruktori ne samo da mogu stvoriti predložak s navedenim vjerodajnicama. Vjerodajnice možemo dodati i nakon stvaranja našeg predloška. TestRestTemplate daje nam metodu withBasicAuth () koji dodaje vjerodajnice već postojećem predlošku:

TestRestTemplate testRestTemplate = novi TestRestTemplate (); ResponseEntity response = testRestTemplate.withBasicAuth ("user", "passwd"). GetForEntity (URL_SECURED_BY_AUTHENTICATION, String.class); assertThat (response.getStatusCode (), jednakTo (HttpStatus.OK));

5. Korištenje oba TestRestTemplate i RestTemplate

TestRestTemplate može raditi kao omot za RestTemplate, npr. ako smo prisiljeni koristiti ga jer imamo posla sa naslijeđenim kodom. U nastavku možete vidjeti kako stvoriti tako jednostavan omot:

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

6. Zaključak

TestRestTemplate nije produžetak RestTemplate, već alternativa koja pojednostavnjuje integracijsko testiranje i olakšava provjeru autentičnosti tijekom testova. Pomaže u prilagodbi Apache HTTP klijenta, ali također se može koristiti i kao omot RestTemplate.

Na GitHubu možete provjeriti primjere iz ovog članka.


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