Die Simulation von Benutzereingaben für TDD JavaScript
Ich bin es zunehmend schwierig, zu simulieren eigentliche Benutzer-Ereignisse mit jQuery oder native element-Funktionen auslösen. Zum Beispiel, wenn Sie eine text-Eingabe-und Sie nicht möchten, dass der Benutzer in der Lage sein, um ein Zeichen hinzuzufügen, rufen Sie e.preventDefault()
mit dem jQuery-normalisiert event-Objekt auf der keydown
Veranstaltung. Jedoch, es gibt keine Möglichkeit, programmgesteuert überprüfen Sie mit diesem test-Szenario.
Den folgenden test geht auch ohne den Anruf zu preventDefault
weil die jQuery keydown-Auslöser nicht um eine "echte" Veranstaltung.
input.val('test').trigger(jQuery.Event({
which: 68
});
expect(input).toHaveValue('test');
Ohne den richtigen code, wird dieser test sollte fehlschlagen, da der Eingang sollte einen Wert von 'testd' (68, ist der Zeichen-code für 'd').
Kennt jemand irgendwelche Methoden oder Bibliotheken zu simulieren real browser UI-Ereignisse?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Simulieren Reale Ereignis ist ziemlich kompliziert. Sie müssen zuerst bestimmen, welche Art der Veranstaltung Sie benötigen, und erstellen Sie es mit
Dokument.createEvent
. Dann rufen Sie verschiedeneinit*Event
zu initialisieren das event-Objekt. Schließlich verwenden- element.dispatchEvent
Versendung der Veranstaltung auf das Zielobjekt.initKeyboardEvent
hat immerkeyCode
undcharCode
auf 0 gesetzt. Ich denke, Sie sollten sich auf FF anstelle von WebKit-basierten Browsern.Werden Sie wahrscheinlich wollen, zu versuchen, mit Selen: http://seleniumhq.org/
Hier ist eine gute übersicht: http://blog.frontendforce.com/2010/05/unit-testing-in-javascript-selenium/
Ich glaube YUI hatte ein paar code zu tun. Laden Sie Ihren code ein und schauen Sie. Ich glaube, es heißt
simulate.js
oder etwas ähnliches. Alternativ können Sie sich, wie Selen tut es.Hier ein repo zu sein scheint, dass immer ziemlich gut up to date: https://github.com/mmonteleone/jquery.autotype