Jednostki testujące dyrektywę kątową nie są zbyt trudne, ale okazało się, że są na to różne sposoby.Jak przeprowadzić test jednostkowy dyrektywy kątowej
Dla celów niniejszego postu, pozwala zakładać następującą dyrektywę
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;
}
}
};
});
Teraz mogę myśleć dwa sposoby testów jednostkowych tej
Metoda 1:
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();
});
});
metoda 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');
});
Więc jestem ciekawy, co pro i minusy mają obie metody i która jest najbardziej wytrzymała?
Zakładam, że kliknięcie na elemencie w testowanie jednostkowe jest jak badanie metod kontrolera w kątomierz – Appeiron