2009-07-20 8 views
7

Czy istnieje sposób przetestowania procedur obsługi zdarzeń klawiatury JavaScript (dla zdarzeń keypress, keyup, keydown)?Jak testować zdarzenia klawiatury jQuery?

wiem, że mogę zadeklarować obsługi zdarzeń tak:

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

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

a potem po prostu uruchomić tę funkcję w testach jednostkowych, ale będę musiał przygotować obiekt argumentów wydarzenie będzie taka sama, jak minął gdy rzeczywisty klucz wciśnięty:

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

Czy istnieje sposób, aby uruchomić to zdarzenie i przekazać kod klucza jako argument lub coś podobnego? Niestety jQuery trigger() docs nie obejmuje wydarzeń na klawiaturze.

Odpowiedz

15

Można przekazywać dowolne dane za pośrednictwem obiektu zdarzenia.

Docs:

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

Co można zrobić:

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

ten sposób wydarzenie przekazywane do obsługi (S) będzie miał keyCode zestaw do co chcesz.

+0

To działa świetnie. Dzięki. – RaYell

+1

Dobra odpowiedź, ale to nie działa z funkcją triggerEvent(), która jest bardziej przydatna podczas testowania wartości zwracanej przez procedurę obsługi. –