Ein Mock ist ein Test Double in Gerard Meszaros' Taxonomie aus xUnit Test Patterns (2007), das mit Erwartungen vorprogrammiert ist, welche Aufrufe das System Under Test machen soll. Seine eingebauten Assertions lassen den Test sofort fehlschlagen, wenn Methode, Argumente oder Reihenfolge falsch sind. Anders als ein Stub verifiziert er Verhalten aktiv, und anders als ein Spy erzwingt er Erwartungen während der Ausführung; das passt zum interaktionsbasierten Testen der London School TDD.
Test Double: Mock (Meszaros)
Details
Kernkonzepte:
- Zweck
-
Vorprogrammiert mit Erwartungen, welche Aufrufe erfolgen sollen. Verifiziert, dass bestimmte Interaktionen stattgefunden haben — der Test schlägt fehl, wenn die erwarteten Interaktionen ausbleiben.
- Verhalten
-
Hat eingebaute Assertions. Ruft das System Under Test die falsche Methode, mit falschen Argumenten oder in der falschen Reihenfolge auf, lässt der Mock den Test sofort fehlschlagen.
- Abgrenzung zum Stub
-
Ein Stub liefert Daten passiv. Ein Mock verifiziert Verhalten aktiv.
- Abgrenzung zum Spy
-
Ein Spy zeichnet Aufrufe für nachträgliche Assertion auf. Ein Mock erzwingt Erwartungen während der Ausführung.
- Schlüsselvertreter
-
Gerard Meszaros ("xUnit Test Patterns", 2007)
Wann zu verwenden:
-
Einem LLM sagen: "Erzeuge ein Mock-Test-Double, das diese Interaktionen verifiziert"
-
Interaktionsbasiertes Testen (London School TDD)
-
Wenn das Verhalten mehr zählt als das Ergebnis
-
Verifizieren, dass eine Benachrichtigung gesendet, ein Log geschrieben oder ein Service korrekt aufgerufen wurde
Verwandte Anker:
-
Test Double (Meszaros) — übergreifende Taxonomie
-
Spy — nachträgliche Assertion statt Erwartungen
-
TDD, London School — bevorzugt Mocks für Outside-in-Design