Bevezetés a Java Hoverfly-ba
1. Áttekintés
Ebben a cikkben megnézzük a Hoverfly Java könyvtárat - amely egyszerű módszert kínál a valódi API-csonkok / szimulációk létrehozására.
2. Maven-függőségek
A Hoverfly használatához egyetlen Maven-függőséget kell hozzáadnunk:
io.specto hoverfly-java 0.8.1
A legújabb verzió itt található.
3. API modellezése
Először konfiguráljuk a Hoverfly-t szimulációs módban történő futtatásra. A szimuláció legegyszerűbb módja a DSL használata.
Kezdjük egy egyszerű példával a HoverflyRule példa:
public static final HoverflyRule rule = HoverflyRule.inSimulationMode (dsl (service ("// www.baeldung.com") .get ("/ api / courses / 1") .willReturn (success (). body (jsonWithSingleQuotes ("{') id ':' 1 ',' név ':' HCI '} "))));
A SimulationSource osztály biztosítja a dsl módszer az API definíció kezdeményezésére. Is, HoverflyDSL’S szolgáltatás A módszer lehetővé teszi számunkra, hogy meghatározzunk egy végpontot és a hozzá tartozó kérési útvonalakat.
Akkor hívunk vissza fog térni hogy melyik választ szeretnénk kapni cserébe. Mi is használtuk siker a metódusa ResponseBuilder a válaszállapot és a test beállításához.
4. Használata JUnit teszteléshez
A Stubbed API könnyen tesztelhető a JUnit használatával.
Hozzunk létre egy egyszerű tesztet, amely HTTP-kérést küld, és nézzük meg, hogy eléri-e a végpontot:
responseEntity courseResponse = restTemplate.getForEntity ("// www.baeldung.com/api/courses/1", String.class); assertEquals (HttpStatus.OK, courseResponse.getStatusCode ()); assertEquals ("{\" id \ ": \" 1 \ ", \" név \ ": \" HCI \ "}", courseResponse.getBody ());
A Spring Web modulokat használtuk RestTemplate osztálypéldány HTTP-kérés küldéséhez.
5. Késések hozzáadása
A késések globálisan hozzáadhatók egy adott HTTP-módszerhez vagy egy adott API-híváshoz.
Itt van a példa a kód beállításának késleltetésére a POST módszerrel rendelkező kéréseknél:
SimulationSource.dsl (service ("// www.baeldung.com") .post ("/ api / courses") .willReturn (siker ()) .andDelay (3, TimeUnit.SECONDS) .forMethod ("POST"))
6. Kérjen egyezőt
HoverflyMatchers gyári osztályban több gyufát is kínál pontosMeccs és globMatch URL-ekhez. A HTTP törzs számára biztosítja.
A HTTP-testek számára biztosítja JSON / XML pontos egyezés és JSONPath / XPath mérkőzések.
Alapértelmezés szerint a pontosMeccs az egyező az URL és a test egyezéséhez egyaránt használható.
Itt van a példa a különböző mérkőzések használatára:
SimulationSource.dsl (service (match ("www. * Dung.com")) .get (startsWith ("/ api / student")) .queryParam ("page", any ()) .willReturn (siker ()). post (equalsTo ("/ api / student")) .body (equalsToJson (jsonWithSingleQuotes ("{'id': '1', 'név': 'Joe'}") "))) .willReturn (siker ()) .put ("/ api / student / 1") .body (mérkőzésekJsonPath ("$. név")) .willReturn (siker ()) .post ("/ api / hallgató") .body (equalsToXml ("2John")). willReturn (siker ()) .put ("/ api / hallgató / 2") .body (mérkőzésekXPath ("/ tanuló / név")) .willReturn (siker ())); )
Ebben a példában mérkőzések metódus ellenőrzi az URL-t a globMatch amely lehetővé teszi a helyettesítő karakterek keresését.
Azután kezdődikVel ellenőrzi, hogy a kérelem elérési útja „/api/diák“. Használtuk Bármi matcher lehetővé teszi az összes lehetséges értéket az oldal lekérdezési paraméterében.
A equalsToJson a matcher biztosítja, hogy a test hasznos terhelése megegyezzen az itt megadott JSON-nal. A mérkőzésekJsonPath létezik vagy nem létezik egy adott JSON útvonal elemével történő ellenőrzés módja.
Hasonlóképpen, equalsToXml megfelel a kérelem törzsében megadott XML-nek az itt megadottal. A mérkőzésekXPath testet illeszt egy XPath kifejezéssel.
7. Következtetés
Ebben a gyors bemutatóban megvitattuk a Hoverfly Java könyvtár használatát. Megvizsgáltuk a HTTP-szolgáltatások, a DSL szimulációját a végpontok konfigurálásához, késedelmek hozzáadásához és a kérelem-egyeztetők használatához. Megvizsgáltuk ezen szolgáltatások tesztelését a JUnit segítségével.
Mint mindig, a kódrészletek, mint mindig, a GitHubon találhatók.