Dette indlæg blev optaget på Faglig Fredag 17. juni 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 til, 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 du 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 du dine 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.

Niels Ull Harremoës

Niels Ull Harremoës

Independent Consultant

Niels Ull Harremoës er selvstændig konsulent og arbejder som arkitekt/udvikler med fokus på applikations- og integrationsarkitektur Han har stor erfaring med Java, JEE, .Net og en lang række teknologier.