Я пытаюсь проверить ввод мыши в модульном тестировании angular 4 karma. Ошибок нет, но ввод мыши не вызывает метод, привязанный к событию ввода мыши.
<div class="contacts-content row no-gutters justify-content-between"
(mouseover)="onMouseEnter($event)"
(mouseout)="onMouseLeave($event)"
(click)="click()"
[ngClass]="{'edit': hover}">
</div>
В классе компонентов я вызываю методы ниже
onMouseEnter(event: any) {
this.hover = true;
this.elementRef.nativeElement.addClass = 'edit';
}
onMouseLeave(event: any) {
this.hover = false;
this.elementRef.nativeElement.addClass = 'un-edit';
}
Тестирование ввода мыши:
it('should mouse over show the edit options to the user', () => {
const div = fixture.nativeElement.querySelector('.contacts-content');
const event = new Event('mouseenter');
div.dispatchEvent(event);
expect(component.hover).toBeTruthy('true');
expect(fixture.nativeElement.querySelector('.col-1').getAttribute('display')).toBeTruthy('inline-block !important');
});
В моем тесте я пытаюсь вызвать событие ввода мыши, но ожидаемый результат не соответствует. Более того, когда я вижу покрытие кода, метод даже не вызывается.
есть идеи?
mouseover
?const event = new Event('mouseover');
- person yurzui   schedule 27.09.2017mouseover
- person yurzui   schedule 27.09.2017debugEl.triggerEventHandler('mouseenter', {});
. В моем случае мне нужно было использоватьdebugEl = fixture.debugElement.query(By.directive(MyDirectiveClass));
, а в директиве есть@HostListener('mouseenter') myHandler() { }
. - person Jon Onstott   schedule 08.07.2020