Wie injiziere ich Abhängigkeiten in AngularJS-Controller-Tests ohne Jasmine-spezifische inject ()

8

Ich versuche mein Gehirn um die Abhängigkeitsinjektion in AngularJS zu wickeln. Nehmen wir an, das ist mein sehr spannender Anwendungscode:

%Vor%

Ich möchte PrideRockCtrl testen. Wenn ich Beispiele in der Dokumentation und im Tutorial befolge, könnte ich den module('Characters') verwenden, um den Injektor zu konfigurieren und inject() verwenden, um einige Abhängigkeiten zu erhalten. d.h.:

%Vor%

Das funktioniert gut, aber das ist keine Test-Framework-Lösung. Die module() und inject() Testhelfer sind nur mit Jasmine kompatibel.

Was ist der beste Weg, um dieselbe Abhängigkeitsinjektion manuell durchzuführen, ohne module() oder inject() ?

zu verwenden?

Ich kam auf folgendes:

%Vor%

Das scheint sehr ausführlich zu sein. Gibt es einen besseren Weg?

jsFiddle: Ссылка

    
Matt York 19.09.2012, 04:58
quelle

2 Antworten

5

Die einfachste mögliche Version, ohne Module zu verwenden, würde so aussehen:

%Vor%

Tatsächlich waren Sie ziemlich nah an Ihren Versuchen, das einzige, was fehlte, war eine lokale Abhängigkeit in einem Controller ( King:"Mufasa" ).

In den Tests wie denen, in denen wir uns nur auf eine einzige, ausgewählte Klasse konzentrieren, ist es nicht notwendig, den $ Injektor zu verwenden, da wir unsere Abhängigkeiten manuell simulieren können. Am Ende des Tages gibt $ Injector nur Instanzen von Objekten, so dass wir diese auch selbst erstellen können.

    
pkozlowski.opensource 19.09.2012 06:54
quelle
4

Eckige Controller sind nur JS-Funktionen. Wenn Sie nichts injiziert haben möchten, rufen Sie sie einfach an.

%Vor%     
will 18.11.2012 02:23
quelle

Tags und Links