При работе над модульным тестом я обнаружил, что fromEvent
в Rx Js не обнаруживает никаких событий, когда я запускаю обработчик событий, используя inputDE.triggerEventHandler('blur', {})
.
Однако, если я изменяю его на inputDE.nativeElement.dispatchEvent(new Event('blur', {}))
это работает.
Может кто-нибудь объяснить мне это поведение? Потому что я ничего не нашел о причине такого поведения.
Просто так, это важно, вот тест
@Component({
template: '<input [(ngModel)]="val" [min]="min" type="text">'
})
class Host {
val = '';
min = 5;
}
...
beforeEach(() => {
fixture = TestBed.createComponent(Host);
component = fixture.componentInstance;
inputDE = fixture.debugElement.query(By.css('input'));
})
...
it('should change value to 4', fakeAsync(() => {
component.val = '1';
component.min = 4;
fixture.detectChanges();
tick();
// inputDE.triggerEventHandler('blur', {});
inputDE.nativeElement.dispatchEvent(new Event('blur', {}));
fixture.detectChanges();
tick();
expect(component.val).toEqual('4');
}));