Introduktion til Hoverfly i Java

1. Oversigt

I denne artikel ser vi på Hoverfly Java-biblioteket - som giver en nem måde at oprette ægte API-stubs / simuleringer på.

2. Maven-afhængigheder

For at bruge Hoverfly skal vi tilføje en enkelt Maven-afhængighed:

 io.specto svævefly-java 0.8.1 

Den nyeste version kan findes her.

3. Simulering af en API

Først konfigurerer vi Hoverfly til at køre i simuleringstilstand. Den enkleste måde at definere en simulation på er ved hjælp af en DSL.

Lad os starte med et simpelt eksempel ved at instantiere HoverflyRegel eksempel:

offentlig statisk endelig HoverflyRule regel = HoverflyRule.inSimulationMode (dsl (service ("// www.baeldung.com"). get ("/ api / kurser / 1") .willReturn (succes (). body (jsonWithSingleQuotes ("{') id ':' 1 ',' name ':' HCI '} "))));

Det SimulationSource klasse giver en dsl metode til at starte API-definitionen. Også, HoverflyDSL'S service metode giver os mulighed for at definere et slutpunkt og tilknyttede anmodningsstier.

Så ringer vi kommer tilbage at angive, hvilket svar vi ønsker at få til gengæld. Vi brugte også succes metode til ResponseBuilder for at indstille svarstatus og organ.

4. Brug JUnit til testning

Stubbed API kan let testes ved hjælp af JUnit.

Lad os oprette en simpel test, der sender en HTTP-anmodning, og se om den når slutpunktet:

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

Vi brugte Spring Web-moduler RestTemplate klasseinstans for at sende en HTTP-anmodning.

5. Tilføjelse af forsinkelser

Forsinkelser kan tilføjes globalt for en bestemt HTTP-metode eller for et specifikt API-opkald.

Her er eksemplet på kodeindstillingsforsinkelse på anmodninger med POST-metode:

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

6. Anmod om matcher

HoverflyMatchers fabriksklasse giver flere matchere inklusive exactMatch og globMatch til webadresser. For HTTP-organ giver det.

For HTTP-organer giver det JSON / XML nøjagtigt match og JSONPath / XPath Tændstikker.

Som standard er exactMatch matcher bruges til både URL og body matching.

Her er eksempel på brug af forskellige matchere:

SimulationSource.dsl (service (matches ("www. * Dung.com")) .get (startsWith ("/ api / student")) .queryParam ("side", enhver ()) .willReturn (succes ()). post (equalsTo ("/ api / student")) .body (equalsToJson (jsonWithSingleQuotes ("{'id': '1', 'name': 'Joe'}"))) .willReturn (success ()) .put ("/ api / student / 1") .body (matchesJsonPath ("$. name")) .willReturn (success ()) .post ("/ api / student") .body (equalsToXml ("2John")). willReturn (success ()) .put ("/ api / student / 2") .body (matchesXPath ("/ student / name")) .willReturn (success ())); )

I dette eksempel Tændstikker metode kontrollerer URL med globMatch der tillader jokertegnsøgning.

Derefter starter med kontrollerer, om anmodningsstien starter med “/api/studerende“. Vi brugte nogen matcher for at tillade alle mulige værdier i sideforespørgselsparameteren.

Det svarer til ToJson matcher sørger for, at kroppens nyttelast matcher den nøjagtige JSON, der er angivet her. Det matchesJsonPath metode til kontrol med et element på en bestemt JSON-sti findes eller ej.

Tilsvarende er lig med ToXml matcher XML, der er angivet i anmodningsorganet, med den, der er angivet her. Det matchesXPath matcher en krop med et XPath-udtryk.

7. Konklusion

I denne hurtige vejledning diskuterede vi brugen af ​​Hoverfly Java-bibliotek. Vi undersøgte simulering af HTTP-tjenester, DSL til konfiguration af slutpunkter, tilføjelse af forsinkelser og brug af anmodningsmatchere. Vi undersøgte også at teste disse tjenester ved hjælp af JUnit.

Som altid kan kodeuddrag findes som altid på GitHub.


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