Тик 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));
};
Другие вопросы по тегам