Inhaltsverzeichnis

Mocking

Wo gemocked werden muss

# in mymodule

import somemodule

somemodule.a()

Wenn hingegen

# in mymodule

from somemodule import a

a()

Begriffe

Fixture

Mock - generell

Funktionen (im Sinne von Objekten, Methoden und Funktionen) rufen häufig andere Funktionen, Variablen/Konstanten oder Attribute von Klassen ab um ihre Arbeit zu tun.
Das ist eine zusätzliche Quelle von Fehlern (da eben diese sich bereits falsch verhalten können) und ggf. „kostenintensiv“ (im Sinne von Rechenleistung und RAM oder Ausführungszeit oder aufwendiger Aufbau nötig).
Um diesen Aufwand zu sparen benutzt man Mocks, im Prinzip Simulationen oder Kartonage-Abbilder die nur die relevanten Werte zurückgeben ohne wirklich irgendwelchen Code auszuführen.

Dummies

Objekte (was letztendlich auch primitive Datentypen inkludiert) die übergeben werden müssen, aber keinen Einfluss auf das zu testende Objekt haben.
Zum Beispiel Parameter die zum instanzieren einer Klassen nötig sind, aber das Objekt was getestet wird ist eine Funktion der Klasse, die durch eben jenenen Parameter nicht beeinflusst wird/nicht davon abhängt.
Die Klasse ließe sich nur ohne den Parameter nicht instanzieren.

Fake

Implementiert eine Methode oder Klasse die wirklich funktioniert (also wirklich etwas tut), das aber in der Regel auf eine verkürzte Weise tut wie das Original

Stubs

Gibt hart kodierte Rückgabewerte zurück.

Mocks

Zeichnen zusätzlich zu Stubs auf was die Aufruparameter waren.

Spies

Wrapper um das Originalobjekt welches aufgerufen werden soll. Zeichnet nur die Parameter auf mit denen das Objekt aufgerufen wurde.