Clean Code - Mocking

Tijdens het testen kan het voorkomen dat je nep objecten moet gaan gebruiken. Deze nep objecten komen in verschillende gradaties en vormen een hierarchie. Onderstaand de hierarchie van hoog naar laag.

- Test double (= abstract)
- Dummy - Een subclass die geen gedrag kent. Alle functies retourneren een waarde die zo dicht mogelijk bij 0 of null ligt.
- Stub - De functions voeren geen acties uit en geven fixed waarden terug die de producitecode sturen richting het pad dat getest moet worden
- The spy - is hetzelfde als de stub, maar onthoud waarden die bruikbaar zijn voor de test. Zo kan bijvoorbeeld geckeckt worden of er een bepaalde functie is aangeroepen of hoevaak een bepaalde functie is aangeroepen. Deze waarden kunnen dan later weer door de test worden uitgelezen.
- The (true) mock - heeft alle eigenschappen die een spy ook heeft. Daar bovenop heeft een mock ook nog een bijzondere feature: hij weet water zou moeten gebeuren. De test checkt niet wat de mock bespioneert. De test vraagt aan de mock of alles is gegaan zoals gegaan zou moeten zijn. De test vertrouwd dus de (true) mock.
- The fake - is geen van allen die hierboven staan beschreven, maar erft wel direct van de test double. De fake is een simulator, het gedraagt zicht alsof het een productie class is, maar is dit niet. Probeer daarom om fakes te vermijden.

Het woordje mock wordt eigenlijk overal voor gebruikt omdat er bij de introductie van dit woord nog geen heldere definitie was. Het woord mock kan dus van alles betekenen: een dummy, een stub, een spy of een true mock.


Reacties

Populaire posts van deze blog

[SQL Server] varchar vs nvarchar

MS Sql 70-461: Chapter 5

[C#] Class serialiseren en deserialiseren