Niet mocken maar stubben met Wiremock

Afgelopen woensdag hadden we weer een zeer interessante deepdive, deze keer over WireMock.

De discussie kwam al snel op gang over het verschil tussen een stub en een mock. Aangezien we er niet uit kwamen, hebben we het ChatGPT gevraagd. Ook die uitleg maakte het nog niet helemaal duidelijk, misschien de afsluitende zin een beetje:

Kortom, een stub simuleert een object om te zorgen dat de code kan draaien, terwijl een mock het gedrag van een object simuleert om te zorgen dat de code kan worden getest.

Maar goed, of we nou een stub of een mock maken, we willen iets maken waardoor we onze SUT kunnen testen zonder afhankelijkheid van een extern systeem dat door de SUT wordt aangeroepen. En daarvoor leren we hoe we met wiremock een stub opzetten, of een mock. 😉

We hebben dit gedaan mede aan de hand van de oefeningen die Bas Dijkstra heeft opgesteld en beschikbaar heeft gesteld in deze github repo. Althans, dat is de Java variant. Wij zijn vooral bezig gegaan met de .net variant. Die is hier te vinden op github.

Onze altijd enthousiaste André Koene nam ons mee in de theorie, waarna we zelf goed aan de slag gingen met de oefeningen. Hoewel André ons ook hielp als we even vast liepen.

Soms was het nog best even puzzelen om te achterhalen waarom het niet werkte, gelukkig konden we elkaar ook goed verder helpen. Met diverse .net developers aan boord bij newspark hebben we een hoop kennis in huis. Dit combineert dan weer mooi met de Testautomatiseringskennis die de diverse TA engineers in ons team meebrengen. Een mooie club samen!

Makkelijk tijdens deze workshop is, dat de unit testen zijn ingebouwd. Je hoeft dus alleen de opgaven uit te voeren, de testen te draaien en zien dat alles groen wordt. En daar houden wij testers en developers wel van.
En als je er niet uit komt, dan kun je kijken bij de answers voor een tip.

Conclusie

Wiremock is een mooi framework waarmee je vrij simpel een mock op kunt zetten. Dit kan zowel lokaal, als centraal gehost worden. Een voordeel is dat dit op basis .net kan, en op basis van java. Zo kunnen zowel de developers als de testers er goed mee werken en het onderhouden.

Het was weer een gezellige en leerzame avond, net als voorgaande deepdives. Ik ben benieuwd wat we tijdens de volgende deepdive gaan leren.