les tests les événements keydown dans le Jasmin avec un mot de code spécifique

Je suis en train d'écrire des tests pour un AngularJS directive qui déclenche les événements d'un <textarea> lorsque certaines touches sont pressées. Tout cela fonctionne très bien pour mon test manuel. Je veux être bien et d'avoir un système complet de test de la suite de trop, mais j'ai un problème que je ne peux pas résoudre sur mon propre:

Je veux envoyer un keyCode dans mon triggerHandler() appel dans mon test, mais je ne peux pas trouver un moyen de spécifier la clé qui fonctionne réellement. Je suis conscient d'un beaucoup de questions et de réponses sur le sujet de la construction et de l'envoi d'événements avec des données précises, mais aucun d'eux ne fonctionne sur ma configuration:

Ma configuration

  • Karma test runner
  • PhantomJS navigateur en cours d'exécution des tests (mais également essayé Firefox et google Chrome sans succès)
  • Je ne suis pas à l'aide de jQuery et je suis l'espoir, il y a une JS solution. Il doit y être!

Code de Test

var event = document.createEvent("Events");
event.initEvent("keydown", true, true);
event.keyCode = 40; //in debugging the test in Firefox, the event object can be seen to have no "keyCode" property even after this step
textarea.triggerHandler(event); //my keydown handler does not fire

La chose étrange est, je peux taper les 3 premières lignes dans la console de Chrome et de voir que l'événement est en cours de création avec la keyCode propriété a la valeur de 40.
Donc il semble que cela devrait fonctionner.

Aussi, quand je l'appelle de la dernière ligne comme ce textarea.triggerHandler("keydown"); il fonctionne et le gestionnaire d'événement est déclenché. Cependant, il n'est pas keyCode à travailler, c'est inutile.

Je soupçonne que c'est peut être quelque chose à voir avec la nature de l'essai en cours d'exécution contre un DOM qui est différent d'une page régulière en cours d'exécution dans le navigateur. Mais je ne peux pas la comprendre!

C'est ce qu'apparemment, vous avez besoin stackoverflow.com/questions/832059/...
Bonjour, cette discussion est précisément à propos de jQuery, je ne suis pas à l'aide. J'espère que je n'ai pas besoin d'inclure jQuery dans mes tests unitaires juste pour cela.
Je pense que j'ai déjà répondu à cette pure JS, mais apparemment, cette question a été supprimé. Vous devriez être capable de trouver plus d'info sur MDN.
Dans d'autres [thread][1] j'ai ajouté réponse et décrit comment tester keydown. [1]: stackoverflow.com/questions/18001169/...

OriginalL'auteur Michael Bromley | 2014-03-22