Wie spioniere ich eine Controller-Methode mit Jasmine aus?

8

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?

%Vor%

Plunker-Link

    
Kmart2k1 25.02.2015, 22:10
quelle

2 Antworten

9

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%     
user2943490 26.02.2015, 01:31
quelle
1

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:

%Vor%

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.

    
dpfrakes 01.04.2016 16:33
quelle

Tags und Links