Test de focus () sur un élément dans un modèle de directive AngularJS

Compte tenu de la directive suivante

directive('myDirective', function() { return { ressortingct: 'A', scope: {}, replace: false, template: '', link: function(scope, element, attr) { scope.onFocus = function() { console.log('got focus'); }; } }; }); 

J’ai testé le fait que Focus Watcher fonctionne dans un navigateur, mais j’aimerais pouvoir le déclencher dans un test unitaire. C’est ce que j’ai essayé mais ça ne marche pas.

 var element = angular.element('
'); $comstack(element)($scope); $scope.$digest(); element.find('input')[0].focus();

Je peux voir que j’arrive correctement dans la zone de saisie avec l’appel à rechercher et je m’attendrais à ce que ce code déclenche l’événement de focus sur la zone de saisie, mais rien ne se passe. Qu’est-ce que j’oublie ici?

Lorsque vous essayez de déclencher des événements sur des éléments angulars, vous devez utiliser la fonction sortingggerHandler () , qui est simplement une fonction jqLite et non des angulars, puis transmettez l’événement en tant que paramètre de chaîne, comme indiqué ci-dessous.

 element.find('input').sortingggerHandler('focus'); 

Pour exécuter toute autre fonction sur un élément angular, lisez la documentation ci- dessous . Elle présente une liste des fonctions disponibles pour les éléments angulars.