W jaki sposób mogę przetestować moją dyrektywę?Testowanie jednostek Instrukcje AngularJS
Co mam jest
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>'
};
})
W moim badanej jednostki Chcę zacząć od bardzo prostego testu
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);
});
});
to nie działa choć jak dyrektywa jest zarejestrowany w module aplikacji i nie chcę włączać modułu, ponieważ spowoduje to uruchomienie całego kodu config
i run
. Byłoby to sprzeczne z celem testowania dyrektywy jako odrębnej jednostki.
Czy mam umieścić wszystkie moje dyrektywy w osobnym module i załadować właśnie to? Czy jest jakiś inny sprytny sposób na rozwiązanie tego problemu?
UWAGA: zdefiniowany zakres var znowu wewnątrz beforeEach. także: _ $ rootScope vs _ $ rootScope _ – felix