Uvod u Hoverfly na Javi

1. Pregled

U ovom ćemo članku pogledati knjižnicu Hoverfly Java - koja pruža jednostavan način stvaranja stvarnih API-ja / simulacija.

2. Ovisnosti Mavena

Da bismo koristili Hoverfly, moramo dodati jednu ovisnost o Mavenu:

 io.specto hoverfly-java 0.8.1 

Najnoviju verziju možete pronaći ovdje.

3. Simulacija API-ja

Prvo ćemo konfigurirati Hoverfly da radi u načinu simulacije. Najjednostavniji način definiranja simulacije je pomoću DSL-a.

Počnimo s jednostavnim primjerom instanciranjem datoteke HoverflyRule primjer:

javno statično konačno pravilo HoverflyRule = HoverflyRule.inSimulationMode (dsl (usluga ("// www.baeldung.com") .get ("/ api / courses / 1") .willReturn (success (). body (jsonWithSingleQuotes ("{' id ':' 1 ',' name ':' HCI '} "))));

The Izvor simulacije razred pruža a dsl metoda za pokretanje definicije API-ja. Također, HoverflyDSL‘S servis metoda omogućuje nam definiranje krajnje točke i pridruženih putova zahtjeva.

Tada zovemo će se vratiti navesti koji odgovor želimo dobiti zauzvrat. Također smo koristili uspjeh metoda ResponseBuilder za postavljanje statusa odgovora i tijela.

4. Korištenje JUNIT za ispitivanje

Stubbed API može se lako testirati pomoću JUnit-a.

Stvorimo jednostavan test koji šalje HTTP zahtjev i provjeravamo doseže li krajnju točku:

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

Koristili smo Spring Web module RestTemplate instance razreda za slanje HTTP zahtjeva.

5. Dodavanje kašnjenja

Kašnjenja se mogu dodati globalno, za određenu HTTP metodu ili za određeni API poziv.

Evo primjera kašnjenja postavljanja koda za zahtjeve s POST metodom:

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

6. Zahtjev za podudaranje

HoverflyMatchers tvornička klasa nudi nekoliko podudaranja, uključujući točno podudaranje i globMatch za URL-ove. Za HTTP tijelo pruža.

Za HTTP tijela koja pruža JSON / XML točno podudaranje i JSONPath / XPath šibice.

Prema zadanim postavkama točno podudaranje podudaranje se koristi za podudaranje URL-a i tijela.

Evo primjera upotrebe različitih podudaranja:

SimulationSource.dsl (usluga (podudara se ("www. * Dung.com")) .get (startWith ("/ api / student")) .queryParam ("stranica", bilo koja ()) .willReturn (uspjeh ()). post (equalsTo ("/ api / student")) .body (equalsToJson (jsonWithSingleQuotes ("{'id': '1', 'name': 'Joe'}"))) .willReturn (uspjeh ()) .put ("/ api / student / 1") .body (matchJsonPath ("$. name")) .willReturn (success ()) .post ("/ api / student") .body (equalsToXml ("2John")). willReturn (success ()) .put ("/ api / student / 2") .body (matchesXPath ("/ student / name")) .willReturn (uspjeh ())); )

U ovom primjeru, šibice metoda provjerava URL pomoću globMatch koji omogućuje pretraživanje zamjenskih znakova.

Zatim počinje sa provjerava započinje li put zahtjeva s “/api/student“. Koristili smo bilo koji podudaranje kako bi se omogućile sve moguće vrijednosti u parametru upita stranice.

The jednakoToJson matcher osigurava da se nosivost tijela podudara s točno navedenim ovdje JSON-om. The odgovaraJsonPath metoda za provjeru s elementom na određenom JSON putu postoji ili ne postoji.

Slično tome, equalsToXml poklapa XML dan u tijelu zahtjeva s onim ovdje. The odgovaraXPath odgovara tijelu s izrazom XPath.

7. Zaključak

U ovom smo brzom vodiču razgovarali o upotrebi Hoverfly Java knjižnice. Istražili smo simuliranje HTTP usluga, DSL za konfiguriranje krajnjih točaka, dodavanje kašnjenja i upotrebu podudaranja zahtjeva. Također smo ispitali ove usluge pomoću JUnit-a.

Kao i uvijek, isječke koda, kao i uvijek, možete pronaći na GitHubu.