Jasmine: Auch Spione können zählen – Teil 2 Calls

Hinweis: Folgende Beschreibungen sind auf Basis von Jasmine 2.2.

In Jasmine: Von Spionen und Zielpersonen – Teil 1 Grundlagen haben wir veranschaulicht, wie man in Jasmine Spione erzeugt und wie diese grundlegend funktionieren. Im zweiten Teil geht es nun um die Funktionalität, die Anzahl und Art der Aufrufe von Funktionen mittels Spionen abzufragen. Dabei wird das Property calls verwendet. Dies ist ein Aufruftracker, der weitere Funktionen bietet, mit denen die Aufrufe ausgewertet werden können.

 

Mit calls.any kann abgefragt werden, ob bislang überhaupt Aufrufe getätigt wurden. Es wird entsprechend ein bool’scher Wert zurückgegeben, auf den über die Matcher toBe oder toBeFalsy / toBeTruthy geprüft werden kann.

 

Möchte man nun die genaue Anzahl der Aufrufe einer Funktion prüfen, so verwendet man calls.count.

 

Das Tracking der Aufrufe kann zwischendurch auch zurückgesetzt werden. Mit calls.reset werden alle Werte des Properties geleert.
Der Spion nimmt dann an dieser Stelle seine Spionageaktivitäten nicht ganz so genau…

 

Für jeden Aufruf können des Weiteren auch Übergabewerte abgefragt werden. Dafür ruft man den Spion mit calls.argsFor und dem Index des gewünschten Aufrufs auf. Die Übergabewerte werden jeweils als Array gespeichert. Daher ist beim Vergleich der Werte wichtig, nicht den Matcher toBe zu verwenden, sondern toEqual.

 

Mit calls.allArgs kann das gesamte Array der Übergabewerte abgerufen werden.

 

Ein Spion kann mit calls.all Aufrufe auch als eigene Objekte abrufen, die Informationen über das aufgerufene Objekt, die Übergabeparameter und den Rückgabewert besitzen. Der Rückgabewert bezieht sich dabei auf einen durch den Spion verursachten Rückgabewert. Ein return innerhalb der ausspionierten Funktion wird nicht berücksichtigt. In diesem Falle würde immer undefined zurückgegeben werden.

 

Als Sonderfälle können außerdem der erste und der letzte Aufruf über den Spion abgerufen werden. Dabei werden wie auch bei all die Aufrufe als Objekt zurückgegeben.

 

Übersicht über die Funktionen eines Spions

JasmineSpies2

Verfasst von Konstanze Steinhausen am 9. Mai 2017 Verfasst von Konstanze Steinhausen am