Como faço para acionar um evento de clique em um teste de unidade para uma diretiva Angular
-
21-12-2019 - |
Pergunta
Eu tenho um aplicativo Angular (executando a partir de um projeto ASP.NET MVC).
Neste aplicativo, tenho uma diretiva com a seguinte função de link:
link: function (scope, element, attrs, formCtrl) {
element.bind('click', function (event) {
formCtrl.$setPristine();
});
}
Eu escrevi este teste:
var $compile,
$rootScope,
form;
beforeEach(module('points'));
beforeEach(inject(function(_$compile_, _$rootScope_, testHelper){
$compile = _$compile_;
$rootScope = _$rootScope_;
testHelper.expectBaseRoute();
}));
it('Should set form to pristine when clicked', function () {
var scope = $rootScope;
form = $compile('<form name="testForm" unsaved-warning-clear><input name="test" ng-model="value"/></form>')(scope);
scope.value = "abc";
scope.$digest();
scope.testForm.test.$setViewValue('def');
expect(scope.testForm.$pristine).toBe(false);
$(form).trigger('click');
expect(scope.testForm.$pristine).toBe(true);
});
Se eu executar isso no navegador usando Jasmine, o teste será aprovado.
Se eu executá-lo com chutzpah
dentro do ide, ele falha.Nunca dispara o click
evento.
Tem algo que estou perdendo?
Solução
No meu caso, foi um incidente de erro estúpido do usuário.
Meu arquivo do executor de teste Jasmine sendo executado no navegador tinha jquery e, em seguida, referência angular.
Meu arquivo chutzpah.json estava na ordem inversa.
Mudei a referência do jquery e ela começou a funcionar.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow