A Spring Boot TestRestTemplate felfedezése

1. Áttekintés

Ez a cikk a tavaszi csizmát tárja fel TestRestTemplate. A „RestTemplate útmutató” folytatásaként kezelhető, amelyet határozottan javasoljuk, hogy olvassa el, mielőtt a TestRestTemplate. TestRestTemplate vonzó alternatívájának tekinthető RestTemplate.

2. Maven-függőségek

Használni TestRestTemplate, megfelelő függőséggel kell rendelkeznie, például:

 org.springframework.boot spring-boot-test 2.2.2.FELHASZNÁLÁS 

A legújabb verziót a Maven Central oldalon találja.

3. TestRestTemplate és RestTemplate

Mindkét kliens nagyon alkalmas integrációs tesztek írására, és nagyon jól tudja kezelni a HTTP API-kkal történő kommunikációt.

Például ugyanazokat a módszereket biztosítják számunkra a standard módszerekkel, fejlécekkel és más HTTP konstrukciókkal.

Mindezeket a műveleteket jól ismerteti az Útmutató a RestTemplate-hez, ezért itt nem fogjuk őket újra megtekinteni.

Íme egy egyszerű GET kérési példa:

TestRestTemplate testRestTemplate = új TestRestTemplate (); ResponseEntity response = testRestTemplate. getForEntity (FOO_RESOURCE_URL + "/ 1", String.osztály); assertThat (válasz.getStatusCode (), egyenlőTo (HttpStatus.OK));

Annak ellenére, hogy mindkét osztály nagyon hasonló, TestRestTemplate nem terjed ki RestTemplate és kínál néhány nagyon izgalmas új funkciót.

4. Újdonságok TestRestTemplate?

4.1. Konstruktor alapvető hitelesítési adatokkal

TestRestTemplate biztosít egy konstruktort, amellyel tudunk hozzon létre egy sablont megadott hitelesítő adatokkal az alap hitelesítéshez.

Az ezen példány használatával végrehajtott összes kérelmet a megadott hitelesítő adatok segítségével hitelesítjük:

TestRestTemplate testRestTemplate = új TestRestTemplate ("felhasználó", "passwd"); ResponseEntity response = testRestTemplate. getForEntity (URL_SECURED_BY_AUTHENTICATION, String.osztály); assertThat (válasz.getStatusCode (), egyenlőTo (HttpStatus.OK));

4.2. Kivitelező With HttpClientOption

TestRestTemplate lehetővé teszi számunkra az alapul szolgáló Apache HTTP kliens testreszabását is a HttpClientOption amely enum in TestRestTemplate a következő lehetőségekkel: ENABLE_COOKIES, ENABLE_REDIRECTS, és SSL.

Lássunk egy gyors példát:

TestRestTemplate testRestTemplate = új TestRestTemplate ("felhasználó", "passwd", TestRestTemplate.HttpClientOption.ENABLE_COOKIES); ResponseEntity response = testRestTemplate. getForEntity (URL_SECURED_BY_AUTHENTICATION, String.osztály); assertThat (response.getStatusCode (), equalTo (HttpStatus.OK))

A fenti példában az opciókat az alapvető hitelesítéssel együtt használjuk.

Ha nincs szükségünk hitelesítésre, akkor is létrehozhatunk egy sablont egy egyszerű konstruktorral:

TestRestTemplate (TestRestTemplate.HttpClientOption.ENABLE_COOKIES)

4.3. Új módszer

A kivitelezők nemcsak létrehozhatnak sablont megadott hitelesítő adatokkal. A sablon létrehozása után hitelesítő adatokat is felvehetünk. TestRestTemplate módszert ad nekünk withBasicAuth () amely hitelesítő adatokat ad hozzá egy már létező sablonhoz:

TestRestTemplate testRestTemplate = új TestRestTemplate (); ResponseEntity response = testRestTemplate.withBasicAuth ("user", "passwd"). GetForEntity (URL_SECURED_BY_AUTHENTICATION, String.class); assertThat (válasz.getStatusCode (), egyenlőTo (HttpStatus.OK));

5. Mindkettő használata TestRestTemplate és RestTemplate

TestRestTemplate csomagolóként működhet RestTemplate, például. ha kénytelenek vagyunk használni, mert régi kóddal van dolgunk. Az alábbiakban láthatja, hogyan hozhat létre ilyen egyszerű csomagolást:

RestTemplateBuilder restTemplateBuilder = new RestTemplateBuilder (); restTemplateBuilder.configure (restTemplate); TestRestTemplate testRestTemplate = új TestRestTemplate (restTemplateBuilder); ResponseEntity response = testRestTemplate.getForEntity (FOO_RESOURCE_URL + "/ 1", String.class); assertThat (válasz.getStatusCode (), egyenlőTo (HttpStatus.OK));

6. Következtetés

TestRestTemplate nem kiterjesztése RestTemplate, hanem egy alternatíva, amely leegyszerűsíti az integrációs tesztelést és megkönnyíti a hitelesítést a tesztek során. Segít az Apache HTTP kliens testreszabásában, de burkolóként is használható RestTemplate.

A cikkben található példákat a GitHubon tekintheti meg.