Ich habe eine Richtlinie, die ich spotten und testen möchte. Die Richtlinie hat ngModel gesetzt Bindung zu verdoppeln und wahrMocking und Testrichtlinie mit isolieren Bereich mit ng-Modell
scope: {'ngModel': '=' }
transclude: true
Die Spezifikation, die ich zu testen bin, ist ziemlich einfach transcluden.
$el.find('input').prop('checked', $scope.ngModel);
Innerhalb von meiner Unit-Tests habe ich eine before und schuf die Richtlinie ngModel testen = geprüft
element = angular.element("<div *directiveName* ><div><input type=\"checkbox\" ngModel=checked /> </div></div>");
$rootScope = $rootScope.$new();
$compile(element)($rootScope);
$rootScope.$digest(element);
scope = element.isolateScope();
Normalerweise würde ich Umfang gleich element.scope gesetzt(). Ich würde die isolateScope() Methode auf diesem Recht anrufen?
Ich glaubte, dass ich seit Umfang setze die Elemente gleich isolateScope() die Spezifikation so einfach wie
sein sollte expect(scope.ngModel).to.equal('checked');
jedoch scope.ngModel nicht definiert ist. Ich bin nicht sicher, was ich vermisse, wenn ich die Richtlinie erstelle oder den Test rufe. Jede Richtung würde sehr geschätzt werden.
Hat Ihre Richtlinie einen isolierten Bereich? versuch scope = element.isolateScope() || element.scope; um beide Szenarien abzudecken. – sdfacre