Ich versuche, einen Komponententest für eine Tastatureingabe zu schreiben. In meiner Komponente habe ich diese Funktion auf meine Tastatur-Ereignisse zu erfassen:winkel 2 einheit test: Wie tastatureingabe zu testen
@HostListener('window:keydown', ['$event'])
keyboardInput(event: any){
if(event.code.toLowerCase()==="escape" && this.formProps.ausgeklappt){
this.closeForm();
} else if(event.code.toLowerCase()==="enter" && this.dayData.isSelected && !this.formProps.ausgeklappt) {
console.log("enter wurde gedrückt " + this.dayData.day);
this.handleHeaderClick();
}
}
Ich habe versucht, das ‚Flucht‘ Ereignis zu simulieren, scheiterte aber kläglich. Mein component.spec.ts sieht wie folgt aus:
it('should trigger escape event',() => {
component.formProps.ausgeklappt = true;
fixture.detectChanges();
let spy = spyOn(component, "closeForm");
const event = new KeyboardEvent("keypress",{
"key": "escape"
});
fixture.nativeElement.dispatchEvent(event)
component.keyboardInput(event);
expect(spy).toHaveBeenCalled();
});
Ich weiß nicht, wie dieses Problem zu lösen, und ich bin für jede Hilfe dankbar ...
Machen Sie den Test async zu ändern. –