Úvod do jazyka Hoverfly v Jave

1. Prehľad

V tomto článku sa pozrieme na knižnicu Java Hoverfly - ktorá poskytuje jednoduchý spôsob vytvárania skutočných útržkov / simulácií API.

2. Maven závislosti

Ak chcete používať Hoverfly, musíme pridať jednu závislosť Maven:

 io.specto hoverfly-java 0.8.1 

Najnovšiu verziu nájdete tu.

3. Simulácia API

Najskôr nakonfigurujeme Hoverfly tak, aby bežala v simulačnom režime. Najjednoduchší spôsob, ako definovať simuláciu, je použitie DSL.

Začnime jednoduchým príkladom vytvorením inštancie HoverflyRule inštancia:

verejné statické finále HoverflyRule rule = HoverflyRule.inSimulationMode (dsl (service ("// www.baeldung.com") .get ("/ api / courses / 1") .willReturn (success (). body (jsonWithSingleQuotes ("{'' id ':' 1 ',' name ':' HCI '} "))));

The SimulationSource trieda poskytuje a dsl metóda na spustenie definície API. Tiež HoverflyDSL‘S služby metóda nám umožňuje definovať koncový bod a súvisiace cesty požiadaviek.

Potom zavoláme vráti sa uviesť, ktorú odpoveď chceme dostať na oplátku. Tiež sme použili úspech metóda ResponseBuilder na nastavenie stavu odpovede a tela.

4. Používanie JUnit na testovanie

Stubbed API je možné ľahko otestovať pomocou JUnit.

Vytvorme jednoduchý test odosielajúci požiadavku HTTP a uvidíme, či dosiahne koncový bod:

responseEntity courseResponse = restTemplate.getForEntity ("// www.baeldung.com/api/courses/1", String.class); assertEquals (HttpStatus.OK, courseResponse.getStatusCode ()); assertEquals ("{\" id \ ": \" 1 \ ", \" meno \ ": \" HCI \ "}", courseResponse.getBody ());

Použili sme modul Spring Web RestTemplate inštancia triedy na odoslanie požiadavky HTTP.

5. Pridanie oneskorenia

Oneskorenia je možné pridať globálne pre konkrétnu metódu HTTP alebo pre konkrétne volanie API.

Tu je príklad oneskorenia nastavenia kódu pri požiadavkách metódou POST:

SimulationSource.dsl (service ("// www.baeldung.com") .post ("/ api / courses") .willReturn (success ()). AndDelay (3, TimeUnit.SECONDS) .forMethod ("POST"))

6. Požiadajte o priradenie

HoverflyMatchers továrenská trieda poskytuje niekoľko porovnávačov vrátane presná zhoda a globMatch pre adresy URL. Pre telo HTTP poskytuje.

Pre orgány HTTP poskytuje JSON / XML presná zhoda a JSONPath / XPath zápasy.

V predvolenom nastavení je presná zhoda matcher sa používa pre zhodu URL aj tela.

Tu je príklad použitia rôznych porovnávacích nástrojov:

SimulationSource.dsl (služba (zápasy („www. * Dung.com“)) .get (startsWith („/ api / student“)) .queryParam („stránka“, any ()) .willReturn (success ()). post (equalsTo ("/ api / student")) .body (equalsToJson (jsonWithSingleQuotes ("{'id': '1', 'name': 'Joe'}")))) .willReturn (success ()) .put ("/ api / student / 1") .body (matchJsonPath ("$. name")) .willReturn (success ()) .post ("/ api / student") .body (equalsToXml ("2John")). willReturn (success ()) .put ("/ api / student / 2") .body (zápasyXPath ("/ študent / meno")). willReturn (success ())); )

V tomto príklade zápasy metóda kontroluje URL s globMatch ktorý umožňuje vyhľadávanie pomocou zástupných znakov.

Potom začína s skontroluje, či cesta požiadavky začína „/api/ študent„. Použili sme akýkoľvek porovnávač, ktorý umožňuje všetky možné hodnoty v parametri dotazu na stránku.

The equalsToJson matcher zabezpečí, aby sa užitočné zaťaženie tela zhodovalo s presným tu uvedeným JSON. The matchJsonPath metóda kontroly s prvkom na konkrétnej ceste JSON existuje alebo nie.

Podobne equalsToXml porovnáva XML zadaný v tele žiadosti s tu uvedeným. The matchXPath zodpovedá telu s výrazom XPath.

7. Záver

V tomto rýchlom výučbe sme diskutovali o použití knižnice Java Hoverfly. Pozreli sme sa na simuláciu služieb HTTP, DSL na konfiguráciu koncových bodov, pridanie oneskorení a použitie porovnávačov požiadaviek. Pozreli sme sa tiež na testovanie týchto služieb pomocou JUnit.

Útržky kódu, ako vždy, nájdete vždy na GitHub.


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