#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