Einspritzen von $ attrs in AngularJS

8

Ich habe JavaScript im Kontext von AngularJS geschrieben. Mein relevantes JavaScript sieht folgendermaßen aus:

%Vor%

Ich versuche, diesen Code zu testen. Um den Code zu testen, benutze ich Jasmine.

%Vor%

Ich kann mir nicht vorstellen, wie ich aus meinem Komponententest einige $ attrs injiziere. Wie mache ich das? Ich kann mein $ scope Setup erfolgreich bekommen. Allerdings verstehe ich nicht, wie man $ attrs injiziert. Gibt es etwas Besonderes, von dem ich nichts weiß? Ich habe ein ähnliches Problem mit $ element, obwohl dieses außerhalb des Kontexts dieses spezifischen Tests liegt.

Danke!

    
user3111277 23.01.2014, 15:56
quelle

3 Antworten

8

Hier ist ein Plünderer: Ссылка

Vielleicht gibt es eine bessere Lösung, aber das ist es, was ich habe.

  • $scope ist leicht zu bekommen, du kannst $rootScope überall einfügen
  • $attrs ist dagegen nur über die Variable $compile verfügbar (sie lebt in compile.js )

Meine Lösung besteht darin, einen gefälschten Controller zu erstellen, zu kompilieren und ihn zu entführen. $attrs .

So sieht es also aus:

%Vor%     
Ilan Frumer 23.01.2014, 16:43
quelle
5

scheint, dass Sie den Controller auch nur mit einem leeren Objekt instanziieren können ...

%Vor%     
jaf0 26.01.2015 20:17
quelle
1

In den neuesten Versionen von AngularJS muss ein Controller bereitgestellt werden, um volle $ attrs zu erhalten.

Siehe Dokumentation zu $ ​​controllerProvider .

Hier ist ein Ausschnitt

%Vor%

Siehe diesen AngularJS $ componentController Unit Test

    
Ricardo Veloso 11.02.2017 06:43
quelle

Tags und Links