Mocking und Test-Doubles
Kurz: Ein Mock ist ein Platzhalter für eine echte Abhängigkeit (Datenbank, Netzwerk, Zeit) in einem Test. Er liefert vorgegebene Antworten und kann prüfen, ob er aufgerufen wurde.
Genauer: Test-Doubles sind Sammelbegriff für Stellvertreter: Dummy (füllt nur einen Parameter), Stub (liefert feste Antworten), Fake (einfache Ersatz-Implementierung, z. B. Datenbank im Speicher), Spy (merkt sich Aufrufe), Mock (prüft Erwartungen auf Aufrufe).
Im Detail
- Warum: Tests werden schnell, laufen unabhängig vom Netz und sind wiederholbar. Fehlerfälle (Timeout, 500-Fehler) lassen sich gezielt erzeugen.
- Zeit mocken: Statt echter Uhr eine feste Uhr, damit Fristen und Ablauf testbar sind.
- Grenzen: Wer zu viel mockt, testet nur sich selbst. Integrationstests mit echter Datenbank bleiben wichtig.
- Technik: Dependency Injection macht Abhängigkeiten austauschbar.
- Werkzeuge: Jest/Vitest (
vi.fn()), Mockito (Java), unittest.mock (Python), WireMock.
Siehe auch: Unit-Test (Modultest), Code-Abdeckung (Coverage)