我有一个带有以下代码的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或rxjs版本是否与使用ng serve运行应用程序时使用的版本不同?我还应该提到,在我将应用程序从Angular 6升级到Angular 8之前,该测试已成功运行。
答案 0 :(得分:0)
问题是我没有用空数组初始化loadingTasks
并且我的代码在ngOnInit
内部,所以它是在我的测试代码更改数组的值之前执行的,所以运算子正在undefined
上进行迭代。不过,我仍然不知道为什么它在升级Angular之前会起作用。