Niels Ull Harremoës: Practical WireMock

Oplægget er optaget på Faglig Fredag hos Lund&Bendsen A/S, den 17/06-2022.

Abstract:
Test er vigtigt og for at kunne teste et system, kan det være nødvendigt at simulere de services, som systemet under test er afhængigt af. At simulere omkringliggende systemer kaldes Mocking. Ofte har vi brug for at mocke HTTP-baserede services, fx REST-API’er, og det har man traditionelt benyttet værktøjer som SoapUI eller Postman som gør det nemt at lave mocks via UI. Et alternativ er WireMock, som giver en programmatisk tilgang til Mocks, så en mock fx kan bringes til live med denne linie java-kode:

stubFor(get(urlPathMatching(“/api/v1/.*”)) .willReturn(aResponse() .withStatus(200) .withHeader(“Content-Type”, “application/json”) .withBody(“”status”: “OK””)));

Alternativt kan man konfigurere køre WireMock som en docker container, som kan konfigureres via statisk konfiguration eller via et REST api. Det kan være nyttigt til integrationstests og lignende.

Med WireMock programmerer man sine mock-services i et JVM-baseret sprog og det giver en række fordele overfor den UI-drevne tilgang, bl.a. at mock-koden kan testes og bringes under versionskontrol. Derudover har WireMock en række nyttige værktøjer, som gør arbejdet med at teste komplicerede serviceorienterede systemlandskaber overkommeligt. Jeg har brugt WireMock på et konkret projekt og vil fortælle om mine erfaringer og give eksempler på praktisk brug af WireMock. Der vil være masser af kode-eksempler.