2009-07-20 5 views
7

Existe-t-il un moyen de tester les gestionnaires d'événements de clavier JavaScript (pour les événements keypress, keyup, keydown)?Comment tester les événements du clavier jQuery?

Je sais que je peux déclarer des gestionnaires d'événements comme celui-ci:

function keyUpEvHandler(e) { 
    ... // code here 
} 

$('#myId').keyup(keyUpEvHandler); 

puis il suffit d'exécuter cette fonction dans les tests unitaires, mais je vais devoir préparer objet argument événement pour être identique à celui passé lorsque la clé réelle est pressé:

var e = {keyCode: 70, ...}; 

Y at-il un moyen de déclencher cet événement et de passer le code clé comme argument ou quelque chose de similaire? Malheureusement, jQuery trigger() docs ne couvre pas les événements clavier.

Répondre

15

Vous pouvez transmettre des données arbitraires via l'objet événement.

Les docs:

var event = jQuery.Event("logged"); 
event.user = "foo"; 
event.pass = "bar"; 
$("body").trigger(event); 

Qu'est-ce que vous pouvez faire:

var event = jQuery.Event("keyup"); 
event.keyCode = 72; 
$(".selector").trigger(event); 

De cette façon, l'événement transmis au gestionnaire (s) auront le keyCode ensemble à ce que vous voulez.

+0

Cela fonctionne très bien. Merci. – RaYell

+1

Bonne réponse, mais cela ne semble pas fonctionner avec triggerEvent(), ce qui est plus utile lors du test de la valeur de retour d'un gestionnaire. –

Questions connexes