Unit-Test eine Winkel-Richtlinie ist nicht sehr schwer, aber ich fand heraus, dass es verschiedene Möglichkeiten, es zu tun.Wie Unit-Test eine Winkel-Richtlinie
Für den Zweck dieser Stelle, können Sie die folgende Direktive
angular.module('myApp')
.directive('barFoo', function() {
return {
restrict: 'E',
scope: true,
template: '<p ng-click="toggle()"><span ng-hide="active">Bar Foo</span></p>',
controller: function ($element, $scope) {
this.toggle() {
this.active = !this.active;
}
}
};
});
Jetzt nehme ich dieses
Methode 1 von zwei Möglichkeiten, um Unit-Test denken kann:
describe('Directive: barFoo', function() {
...
beforeEach(inject(function($rootScope, barFooDirective) {
element = angular.element('<bar-foo></bar-foo>');
scope = $rootScope.$new();
controller = new barFooDirective[0].controller(element, scope);
}));
it('should be visible when toggled', function() {
controller.toggle();
expect(controller.active).toBeTruthy();
});
});
Methode 2 :
beforeEach(inject(function ($compile, $rootScope) {
element = angular.element('<bar-foo></bar-foo>');
scope = $rootScope.$new();
$compile(element)(scope);
scope.$digest();
}));
it ('should be visible when toggled', function() {
element.click();
expect(element.find('span')).not.toHaveClass('ng-hide');
});
Also, ich bin gespannt, was die Vor- und Nachteile beider Methoden und welche ist am robustesten?
Ich gehe davon aus, dass in Unit-Tests auf Element klicken ist wie Test-Controller Methoden in Winkelmesser – Appeiron