Come faccio a scatenare un evento Click in un test unitario per una direttiva angolare
-
21-12-2019 - |
Domanda
Ho un'app angolare (in esecuzione da un progetto MVC ASP.NET.)
In questa app, ho una direttiva con la seguente funzione di collegamento:
link: function (scope, element, attrs, formCtrl) {
element.bind('click', function (event) {
formCtrl.$setPristine();
});
}
.
Ho scritto questo test:
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 l'ho eseguito nel browser utilizzando il gelsomino, il test passa.
Se lo eseguo con chutzpah
all'interno dell'IDE, fallisce.Non spara mai l'evento click
.
C'è qualcosa che mi manca?
Soluzione
Per il mio caso, è stato un incidente di stupido errore utente.
Il mio file runner di test del gelsomino viene eseguito dal browser ha avuto jQuery, quindi referenziato angolare.
Il mio file chutzpah.json ha avuto l'ordine inverso.
Ho spostato il reference jQuery e ha iniziato a lavorare.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow