Mocks, Stubs und Fakes

Ein Test-Double ersetzt eine reale Abhängigkeit in einem Test. Ein Stub liefert vordefinierte Antworten und prüft nichts. Ein Mock ist ein Stub, der zusätzlich protokolliert, wie er aufgerufen wurde, sodass der Test die Interaktion bestätigen kann – "charge was called once with 20" . Ein Fake ist eine funktionierende, vereinfachte Implementierung, beispielsweise eine In-Memory-Datenbank oder eine API, die einen Zustand speichert.

So funktioniert es

Stubs eignen sich für Tests, bei denen nur die Abhängigkeit beantwortet werden muss. Mocks eignen sich für Tests, bei denen der Aufruf selbst das zu überprüfende Verhalten ist. Fakes eignen sich für Tests, die Abläufe – erstellen, lesen, aktualisieren – testen, bei denen vordefinierte Antworten jeden Schritt vorhersehen müssten. Im HTTP-Testing werden alle drei oft allgemein als "mock APIs" bezeichnet.

Das Missverständnis

Mehr Mocking bedeutet bessere Isolation. Übermäßig gemockte Tests prüfen die Art und Weise, wie Code geschrieben ist, anstatt seine Funktion zu analysieren, und schlagen bei jeder Refaktorisierung fehl, während sie echte Integrationsfehler übersehen. Ein Fake, der sich wie der reale Dienst verhält, deckt oft mehr Fehler mit weniger Aufwand auf.

Probieren Sie es hier aus

Dieser Spielplatz ist im strengen Sinne ein Fake: Schreibvorgänge bleiben in Ihrer Sandbox erhalten, sodass ein POST-Request für einen späteren GET-Request sichtbar ist, Versionen sich weiterentwickeln und der Vorrat zur Neige geht – ein Verhalten, das ein Stub nicht haben kann.

Quellen

Weitere Begriffe

Diese Seite auf Englisch lesen

Alle Glossarbegriffe · Testtechniken · Alle 39 Mock-REST-APIs

Zuletzt aktualisiert