Тик Angular Jest не работает для debounceTime на RxJS 7
Я обновил свое приложение angular до Angular 13, и все продолжало работать нормально. Затем я обновил RxJS с 6.6.0 до 7.4.0. После этого какой-то юнит-тест не удался.
Псевдотест:
it('should test some async', fakeAsync(() => {
component.form.control.get('control').setValue('value')
expect(component.somevalue).toBeNull();
tick(999);
fixture.detectChanges();
expect(component.somevalue).toBeNull();
tick(1);
fixture.detectChanges();
expect(component.somevalue).not.toBeNull();
}));
Псевдокод
form.control.get('control').valueChange.pipe(debounceTime(1000)).subscribe(x => this.someValue = x);
В тесте подписчик никогда не получает результат, поэтому кажется
debounceTime
никогда не продолжается. Есть идеи, как это решить?
я использую
"@angular-builders/jest": "^13.0.2",
"jest": "27.4.3",
"jest-preset-angular": "^11.0.1",
1 ответ
Похоже, это проблема. https://github.com/angular/angular/issues/44351 . Хотя это и не идеально, на данный момент это работает:
it('should test some async', async () => {
await wait(999);
});
export const wait = (ms: number): Promise<any> => {
return new Promise(resolve => setTimeout(resolve, ms));
};