2017-11-24 1 views
0

Ich versuche, Tastenanschläge zu einem Eingabefeld in einem meiner Jest-Tests zu simulieren.Dispatching Tastaturereignis tut nichts in Jest Testumgebung

Dieser Code funktioniert einwandfrei in einem Browser, scheint aber in meinem Test nichts zu tun, keine Fehler. Ich denke, ich vermisse hier etwas Offensichtliches, irgendwelche Hinweise?

Der Grund für die Tastenanschläge ist, weil ich den Fokus einer Eingabe nach X Zeichen testen möchte, so würde jede andere Idee, wie man dies in Jest testen würde ebenfalls geschätzt werden.

const key1 = document.querySelector('.test-input'); 

console.log('before', key1.value); // "" empty 

key1.dispatchEvent(new KeyboardEvent('keydown', { 'key': 'a' })); 
key1.dispatchEvent(new KeyboardEvent('keydown', { 'key': 'b' })); 
key1.dispatchEvent(new KeyboardEvent('keydown', { 'key': 'c' })); 

console.log('after', key1.value); // "" empty 

key1.value = 'hello??'; 

console.log('after', key1.value); // "hello??" 
+0

Wie testen Sie es? Bitte beachten Sie, dass Jest [jsdom] (https://github.com/tmpvar/jsdom) verwendet, um die Browserumgebung zu überspielen. –

+0

Knotenumgebung mit Jest. Ich habe eine Reihe anderer Tests, die in Ordnung sind, scheint nur das Tastaturereignis zu sein, mit dem ich Probleme habe. Ich habe noch keine Behauptungen, versuche nur, einen aktualisierten Wert nach den Tastenanschlägen zu erhalten, und mache dann Assertions. – Zinc

+0

Vielleicht müssen Sie auch den Tastendruck auslösen? https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent – HMR

Antwort

0

Also das Problem war, dass ich zuerst auf den Eingang programmatisch konzentrieren musste!