Тестовая директива, которая прослушивает нажатие клавиши ввода с Angular и Jasmine - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть директива, которая прослушивает события нажатия клавиш для выполнения действий при нажатии клавиши ввода, и компонент, использующий его:

onEnter директива

@Directive({
    selector: '[appOnEnter]'
})
export class OnEnterDirective {

    @Output() enterPressed = new EventEmitter();

    @HostListener('document:keydown', ['$event'])
    onKeyPress(event: KeyboardEvent) {
        if ((event.which === 13)) {
            this.enterPressed.emit();
        }
    }

}

component.html

<div appOnEnter (enterPressed)=do()></div>

component.ts

export class Component {

    next = new EventEmitter<null>();

    do() {
        this.next.emit();
    }

}

Я пытаюсь проверить это с Жасмин, но событие, похоже, не вызвано.

component.spec.ts

it('if enter is pressed action should be taken', () => {
        spyOn(component.next, 'emit');
        const event = new KeyboardEvent('keypress', {
            key: 'Enter'
        });
        fixture.detectChanges();
        expect(component.next.emit).toHaveBeenCalled();
    });

Компонент и директива работают нормально, единственная проблема - издеваться над вводом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...