Spring GDS 25. Jubiläum
Ein Logistikunternehmen, das in 190 Länder versendet, hat etwas gebaut, um an sich selbst zu liefern.
Mocking ersetzt eine echte Abhängigkeit durch eine falsche, damit ein Test isoliert laufen kann. Wenn der geprüfte Code einen Zahlungsanbieter, eine Datenbank oder eine fremde API aufruft, soll der Test keine Karte wirklich belasten oder davon abhängen, dass ein Server läuft. Ein Mock tritt an die Stelle dieser Abhängigkeit, liefert die Antwort, die Sie ihm vorgeben, und lässt Sie den fraglichen Code prüfen, ohne die ganze Welt in den Test zu ziehen.
Das Vokabular ist präzise, und die Unterschiede zählen. Ein Stub liefert eine vorgefertigte Antwort, damit der Code etwas hat, womit er arbeiten kann. Ein Mock geht weiter und zeichnet auf, wie er aufgerufen wurde, sodass der Test prüfen kann, ob eine Funktion mit den richtigen Argumenten in der richtigen Anzahl gefeuert hat. Ein Fake ist eine leichtgewichtige, funktionierende Implementierung, etwa eine In-Memory-Datenbank, die sich wie die echte verhält, aber nur für den Test lebt. Mocking, wenn ein Checkout eine Zahlungs-API aufruft, heißt, dass der Test eine erfolgreiche Belastung, eine abgelehnte Karte und einen Timeout in drei getrennten Läufen simulieren kann, ohne echtes Geld zu berühren.
Der Kompromiss ist Realismus. Ein Mock verhält sich nur so, wie Sie es ihm sagten, also passt der Test, während die Produktion scheitert, wenn Ihre Annahme über die echte Abhängigkeit falsch ist. Darum gehören Mocks in Unit-Tests, wo Isolation der Sinn ist, und Integrationstests prüfen weiterhin die echten Verbindungen, um zu bestätigen, dass die Annahmen halten.
Wir mocken, um Tests schnell und deterministisch zu machen, und wir wissen, wo Schluss ist. Unit-Tests mocken die Außenwelt, damit sie in Millisekunden laufen und nie an einem Netzwerk-Schluckauf scheitern. Die Integrationsschicht behält die echten Verbindungen, denn das ist der einzige Ort, an dem eine falsche Annahme über eine fremde API tatsächlich auffliegt.
Das Risiko, das wir im Auge behalten, ist eine Suite, die grün ist, weil sie nur die Mocks testet. Unsere automatisierten Softwaretests halten Mocks ehrlich, indem wir sie an die echten Verträge binden und aktualisieren, wenn sich eine API ändert, sodass ein bestandener Test funktionierenden Code bedeutet und keine bequeme Fiktion. Wir dokumentieren, was gefälscht ist und warum, damit das Team, das die Suite erbt, genau weiß, was sie beweist und was nicht.
Tests langsam, instabil oder rufen echte Dienste auf, die sie nicht sollten? Ziehen wir sie straff.
Ein Logistikunternehmen, das in 190 Länder versendet, hat etwas gebaut, um an sich selbst zu liefern.
Eine Marke in ein funktionierendes Geschäft verwandeln.
Eine halbe Million Menschen. Eine App. Null Chaos.















