Галочка Angular Jest не работает для времени завершения на RxJS 7

#angular #rxjs #jestjs #angular-jest

#угловой #rxjs #jestjs #angular-jest

Вопрос:

Я обновил свое приложение angular до Angular 13, и все продолжало работать нормально. Затем я обновил RxJS с 6.6.0 до 7.4.0. После этого некоторые unittest завершились неудачей.

Псевдотест:

 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);
 

В тесте subscribe никогда не получает результата, поэтому кажется debounceTime , что он никогда не продолжается. Есть идеи, как это решить?

Я использую

 "@angular-builders/jest": "^13.0.2",
"jest": "27.4.3",
"jest-preset-angular": "^11.0.1",
 

Комментарии:

1. используете ли вы жасминовые шарики (или jest-шарики) где-нибудь в своих тестах?

2. @SomerandomITboy нет, это не так. Я использую только зависимости, описанные выше.

3. Я упомянул, потому что мы используем jasmine-marbles (мы используем jasmine), и оказалось, что нам нужно npm install jasmine-marbles@latest было получить правильную тестовую версию из-за того, что разработчик не опубликовал последнюю версию jasmine-marbles из-за того, что большинство людей еще не в Angular 13. Смотрите Этот пост . Возможно, это то же самое для базовых зависимостей для jest.

4. Скорее всего, проблема в том, что rxjs изменил способ работы оператора debounceTime. В репозитории angular есть открытая проблема для исправления этой ошибки: github.com/angular/angular/issues/44351