Je voudrais (unit) tester mon application AngularJS sans avoir à utiliser jQuery, car jQuery remplacera jqLite et dans l'application réelle jQuery ne sera pas non plus disponible. Il y a de réelles différences entre jQuery et jqLite, donc avoir jQuery disponible pour AngularJS dans les tests unitaires est un risque.
La plupart de mes tests fonctionnent bien sans jQuery maintenant, mais j'ai besoin de déclencher un keydown pour la touche échappement, quelque chose que je ne peux trouver comment faire en utilisant jQuery. Comment puis-je faire cela en Javascript de manière transversale?
La directive écoute les keydowns échappement de cette manière:
body.bind('keydown', handledEscapeKey);
var handledEscapeKey = function(e) {
if (e.which === 27) {
e.preventDefault();
scope.$apply(scope.hideTooltip());
}
};
J'ai essayé ceci mais cela ne semble pas fonctionner:
if( window.KeyEvent ) {
var evObj = $document.createEvent('KeyEvents');
evObj.initKeyEvent( 'keydown', true, true, $window, false, false, false, false, 27, 0 );
} else {
var evObj = $document.createEvent('UIEvents');
evObj.initUIEvent( 'keydown', true, true, $window, 1 );
evObj.keyCode = 27;
}
elm[0][0].dispatchEvent(evObj);