2017-09-18 4 views
0

J'essaie de déclencher un événement de presse de bouton Échap dans les tests unitaires angulaires.Comment générer une touche d'échappement enfoncée en tapuscrit pur (sans JQuery)

const event = document.createEvent('UIEvent'); 
    event.initUIEvent('keydown', true, true, window, 0); 
    (<any>event).keyCode = 27; 
    (<any>event).key = 'Escape'; 
    (<any>event).charCode = 27; 

    document.body.dispatchEvent(event); 

Cela ne fonctionne pas du tout (l'événement est jamais pris par les auditeurs qui font une vérification correcte comme event.which == 27).

Quelle est la bonne façon de créer un tel événement?

J'ai essayé celui-ci aussi, en vain

const event = new Event('keydown', {bubbles: true}); 
    event.initEvent('keydown', true, true); 
    (<any>event).keyCode = 27; 
    (<any>event).key = 'Escape'; 
    (<any>event).charCode = 27; 

    document.body.dispatchEvent(event); 

Répondre

0

Vous avez seulement besoin d'utiliser un événement de clavier sur le document ou sur un élément

 const event = new KeyboardEvent("keydown",{ 
    'key': 'Escape' 
    }); 
    document.dispatchEvent(event); 

Vous pouvez le tester avec HostListener

@HostListener('document:keydown', ['$event']) 
handleKeyboardEvent(event: KeyboardEvent) { 
    console.log(event); 
    let keyPressed = event.keyCode; 
    if (keyPressed === 27) { 
     console.log('Escape!'); 
    } 
}