t2informatik » Wissen kompakt » Mock-Objekt

Mock-Objekt

Die Attrappe in der Softwareentwicklung

Ein Mock-Objekt ist in der Softwareentwicklung eine Attrappe, die als Platzhalter für noch nicht realisierte Objekte verwendet wird, um Modultests zu ermöglichen. Auch wenn der Begriff „to mock“ etwas vortäuschen bedeutet, so wird ein Mock-Objekt nicht in böser, sondern in guter Absicht verwendet. Beispielsweise lassen sich Mock-Objekte nutzen, wenn:

  • das gewünschte Objekt noch nicht zur Verfügung steht.
  • das reale Objekt nicht durch einen Test beschädigt werden soll – bspw. Daten dauerhaft löscht.
  • ein Verhalten nachgestellt werden soll, dass nur schwierig auszulösen ist.
  • die reale Lösung zu komplex und langsam für einen Test ist – bspw. eine vollständige Datenbank, die vor jedem Test initialisiert werden müsste.

Mock-Objekte – kurz auch als Mocks bezeichnet – können immer dann nützlich sein, wenn das isolierte Testen eines einzelnen Objekts schwierig, zeitaufwändig oder auch nur eingeschränkt bzw. überhaupt nicht möglich ist. So lassen sich Mock-Objekte verwenden, um ein gewünschtes Verhalten nachzustellen – bspw. könnte bei einem Methodenaufruf über eine Schnittstelle das Mock-Objekt Werte zurückliefern, die in einem Testfall vorab festgelegt wurden.

Es gibt verschiedene Arten von Mock-Objekten:

  • Ein „Dummy“ ist ein Objekt, das im Code weitergegeben, aber nicht verwendet wird. Es wird genutzt, um Parameter mit Werten zu befüllen.
  • Ein „Fake“ ist ein teilweise implementiertes Objekt, das nur eingeschränkt einsatzfähig ist. Beispiel: eine Datenbank die Daten nicht persistent speichert.
  • Ein „Stub“ ist ein Objekt, das unabhängig von einer Eingabe / Input immer dieselbe Antwort / Output liefert.
  • Ein „Spy“ ist ein Objekt, das Aufrufe und Werte protokolliert und gegebenenfalls ausliefert.
  • Ein Shim bzw. ein Shiv ist ein Objekt, das Anfragen an eine Schnittstelle abfängt und selbst antwortet.

Die Meinungen gehen auseinander bei der Frage, ob ein Mock-Objekt auch bei einem Integrationstest nützlich sein kann. Idealerweise testet ein Integrationstest ein gesamtes System auf funktionale Vollständigkeit und Fehlerfreiheit. In der Praxis kann es jedoch immer wieder vorkommen, dass nicht alle Elemente rechtzeitig fertiggestellt wurden – hier könnte der Einsatz von Mocks Sinn ergeben.

„Das ist mal ein Newsletter, der mich wirklich weiterbringt und auf den ich mich jede Woche freue.“

Wöchentliche Tipps, Meinungen und Informationen gibt es im t2informatik Blog – regelmäßig mit renommierten Gastautoren.

Share This