Ich verwende die "controller as" -Syntax, um meinen Controller zu erstellen. Ich habe eine private Initialisierungsfunktion, die eine Funktion aufruft, um die Standarddaten zu laden.
%Vor% In meinem Test erstelle ich einen Spion, um zu überprüfen, ob die Funktion loadData
aufgerufen wurde. Obwohl ich überprüfen kann, dass die Funktion aufgerufen wurde, indem ich auf das Flag mc.dataLoaded
getestet habe, scheint mein Spion die aufgerufene Funktion nicht aufzuzeichnen. Wie kann ich den Spion dazu bringen, den Funktionsaufruf korrekt aufzuzeichnen?
Diese Zeilenfolge:
%Vor% Bedeutet, dass der Jasmine-Spion erstellt wird nachdem der Controller bereits von $ controller instanziiert wurde. Bevor der Spion erstellt wird, wurde die Funktion init
bereits ausgeführt.
Sie können die Zeilen auch nicht umschalten, da MainCtrl existieren muss, bevor Sie eine Methode für sie ausspionieren können.
Wenn die init
-Funktion einen anderen Dienst aufruft, dann spioniere die Methode dieses Dienstes aus und bestätige, dass der Dienst korrekt aufgerufen wird. Wenn MainCtrl nur intern etwas tut, dann testen Sie das Ergebnis, indem Sie zum Beispiel feststellen, dass die Daten / Eigenschaften des Controllers aktualisiert werden. Es lohnt sich vielleicht nicht einmal zu testen, wenn es einfach genug ist.
Da Sie den Controller auch als Syntax verwenden, können Sie den Controller über den Rückgabewert von aufrufendem $ controller referenzieren, anstatt direkt auf den Bereich zuzugreifen:
%Vor% Ich habe eine Lösung gefunden, mit der ich den Controller nicht wechseln konnte. Ich habe einen $state
mock-Service in die beforeEach
-Methode der Test-Suite aufgenommen und eine reload
mock-Methode angegeben:
Dann kann ich innerhalb der Jasmin-Tests einfach stateMock.reload()
aufrufen, um meinen Controller neu zu initialisieren und gleichzeitig meine Spione zu schützen, die ich in einem anderen beforeEach
Block deklariert habe.