Selon mon exigence, nous devons écrire des spécifications de test pour les touches de raccourci (disons shift + 1 + L - télécharger le fichier) .Dans ma méthode j'ai écrit quelque chose comme ci-dessouscomment définir keyCode ou lesquelles ou propriétés de clé ou de code pour l'événement de clavier
public static SHIFTKEY : number = 16;
this.keys = {};
document.addEventListener('keydown', (event: KeyboardEvent) => {
var code = event.which ? event.which : event.keyCode;
if (code === KeyCodeConst.SHIFTKEY || (this.keys[KeyCodeConst.SHIFTKEY] && trackedKeys[code])) {
if (!this.keys[code]) {
this.keys[code] = true;
this.keysCount++;
}
if (this.keysCount === 3) {
alert('call the method which is required');
}
}
if (!trackedKeys[code]) {
this.keysCount = 0;
}
});
maintenant, dans mon fichier spec je suis en train d'écrire un test pour cela comme ci-dessous
describe('Add Event Listener',() => {
beforeEach(() => {
viewModel = new viewModel();
spyOn(window, 'addEventListener').and.callThrough();
});
it('check the combination of keys are called',() => {
keyPress(16);
keyPress(49);
keyPress(76);
expect(viewModel.keys[KeyCodeConst.SHIFTKEY]).toBeTruthy();
});
function keyPress(keyCodeVal) {
var keyboardEvent = document.createEvent('KeyboardEvent');
try {
Object.defineProperty(keyboardEvent, 'keyCode', {'value': keyCodeVal});
} catch (err){
console.log(err);
}
keyboardEvent.initKeyboardEvent('keydown',true,false,window,'',0,'',false,'');
document.body.dispatchEvent(keyboardEvent);
}
});
Pendant l'exécution de la construction, je reçois une erreur comme ci-dessous et il donne une erreur de construction comme ci-dessous
Attempting to change value of a readonly property.
at defineProperty (--some url--)
at keyPress (--some url--)
Existe-t-il un moyen d'envoyer la valeur de touche enfoncée à la méthode, à l'exception de keyCode ou de qui? Conformément aux directives MDN j'ai observé que ce sont des attributs en lecture seule. J'ai essayé d'utiliser la clé, mais cela n'a pas fonctionné.
merci. Pour tester les événements keydown, j'ai besoin de créer un élément avant chaque chose. Quelque chose comme ceci - $ ('body'). Append (""); qui ne servira pas mon but – Krishna
'triggerKeyDown (document.body, 11)' devrait fonctionner – DevDig
La propriété 'KeyboardEvent' n'existe pas sur le type 'Window' .-- Je reçois cette erreur. J'ai vérifié que la bibliothèque n'existait pas. – Krishna