Wie kann ich meine Direktive testen?Unit Test AngularJS Direktiven
Was ich habe, ist
angular.module('MyModule').
directive('range', function() {
return {
restrict: 'E',
replace: true,
scope: {
bindLow: '=',
bindHigh: '=',
min: '@',
max: '@'
},
template: '<div><select ng-options="n for n in [min, max] | range" ng-model="bindLow"></select><select ng-options="n for n in [min, max] | range" ng-model="bindHigh"></select></div>'
};
})
In meiner Einheit Test, den ich mit einem sehr einfachen Test
describe('Range control', function() {
var elm, scope;
beforeEach(inject(function(_$compile_, _$rootScope) {
elm = angular.element('<range min="1" max="20" bind-low="low" bind-high="high"></range>');
var scope = _$rootScope_;
scope.low = 1;
scope.high = 20;
_$compile_(elm)(scope);
scope.$digest();
}));
it('should render two select elements', function() {
var selects = elm.find('select');
expect(selects.length).toBe(2);
});
});
Dies gilt allerdings nicht gestartet werden soll arbeiten, wie die Richtlinie über das App-Modul registriert ist und ich möchte das Modul nicht einschließen, weil das meinen ganzen config
und run
Code laufen lässt. Dies würde den Zweck der Erprobung der Richtlinie als separate Einheit zunichte machen.
Soll ich alle meine Direktiven in ein separates Modul legen und genau das laden? Oder gibt es eine andere clevere Art, das zu lösen?
Anmerkung: definiert Sie var Umfang wieder innerhalb von before. auch: _ $ rootScope vs _ $ rootScope _ – felix