testen keydown-Ereignisse in Jasmin mit bestimmten keyCode

Schreibe ich tests für eine AngularJS-Direktive, die Brände, die die Ereignisse der <textarea> wenn bestimmte Tasten gedrückt werden. Hat alles Prima funktioniert meine pro manual testing. Ich will gut sein, und haben eine volle unit-test-suite auch, aber ich habe ein problem kann ich nicht lösen, aber auf meine eigene:

Will ich senden Sie eine spezifische keyCode in meinem triggerHandler() Anruf in meinem test, aber ich kann nicht einen Weg finden, geben Sie den Schlüssel , die tatsächlich funktioniert. Ich bin mir bewusst, eine viel Fragen und Antworten zum Thema Bau und senden von Ereignissen mit bestimmten Daten, aber keiner von Ihnen arbeiten auf meinem setup:

Mein setup

  • Karma test runner
  • - Browser PhantomJS der Ausführung der tests (aber auch versucht, Firefox und Chrome ohne Erfolg)
  • Ich bin nicht mit jQuery und ich hoffe, es gibt eine regelmäßige JS-Lösung. Es muss sein!

Test-code

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

Das merkwürdige ist, ich kann die ersten 3 Zeilen in der Konsole in Chrome und sehen, dass das Ereignis erstellt wird mit die keyCode Eigenschaft auf 40 gesetzt.
So wie es scheint, sollte es funktionieren.

Auch, wenn ich die Letzte Zeile wie diese textarea.triggerHandler("keydown"); es funktioniert und der event-handler ausgelöst wird. Es gibt jedoch keine keyCode mit zu arbeiten, so ist es sinnlos.

Ich vermute, es könnte etwas damit zu tun, mit der Art der test läuft gegen eine DOM, der anders ist, eine normale Seite im browser ausgeführt werden. Aber ich kann ' T es herausfinden!

  • Dies ist, was Sie scheinbar brauchen, stackoverflow.com/questions/832059/...
  • Hi, diese Diskussion ist insbesondere über jQuery, das ich nicht verwende. Ich hoffe, ich brauche nicht zu zählen jQuery in meine unit-tests, die nur für diese.
  • Ich glaube, ich habe schon beantwortet, diese für eine Reine JS, aber anscheinend, dass die Frage gelöscht wurde. Sie sollten in der Lage sein zu finden, mehr info auf MDN.
  • In anderen [thread][1] habe ich Hinzugefügt beantworten und beschrieben, wie um zu testen, keydown. [1]: stackoverflow.com/questions/18001169/...
Schreibe einen Kommentar