rx js zip с оператором распространения не работает только в тесте кармы - PullRequest
1 голос
/ 21 февраля 2020

У меня есть приложение Angular со следующим кодом:

zip(...this.loadingTasks).subscribe((result: boolean[]) => {
  this.shouldShowContent = result.every((isLoading: boolean) => {
    return !isLoading;
  });
});

, где loadingTasks имеет тип Observable<boolean>[]. Все отлично работает при запуске приложения, но когда я выполняю свои тесты кармы / жасмина, которые выглядят так:

const obs1 = of(false);
const obs2 = of(false);
component.loadingTasks = [obs1, obs2];
// ...

expect(component.shouldShowContent).toBe(true);

я получаю следующую ошибку:

TypeError: Object(...) is not iterable (cannot read property Symbol(Symbol.iterator))

Что происходит Вот? Использует ли карма версию TypeScript или rx js, отличную от той, которая используется при запуске приложения с ng serve? Следует также упомянуть, что этот тест был успешно выполнен до того, как я обновил свое приложение с Angular 6 до Angular 8.

1 Ответ

0 голосов
/ 21 февраля 2020

Проблема заключалась в том, что я не инициализировал loadingTasks с пустым массивом, а мой код был внутри ngOnInit, поэтому он был выполнен до того, как мой тестовый код изменил значение массива, и поэтому оператор распространения перебрал undefined. Я все еще в недоумении, почему он работал до обновления Angular.

...