我正在尝试测试一个组件,该组件在商店中调度了一个动作,然后从该switchmap内部返回了一些数据
此问题与对该组件进行单元测试有关。如果删除switchmap,则代码可以正常运行,否则会失败,并显示
undefined is not a constructor
这是我的规格文件
it('should dispatch xyz action oninit', async(() => {
mockStore.select.and.returnValue(MockService.xyz);
component.ngOnInit();
expect(mockStore.select).toHaveBeenCalledTimes(1);
expect(mockStore.select).toHaveBeenCalledWith(fromStore.xyz);
expect(component.data$).toEqual(Observable.of(MockService.xyz));
}));
这是组件oninit方法
ngOnInit(): void {
this.data$ = this.store.select(fromStore.xyz)
.switchMap((val) => { return Observable.of{zyz};}
}
如果我删除此switchmap测试运行正常,我看到的错误是
undefined is not a constructor (evaluating 'this.store.select(fromStore.zyz)
.switchMap')
我正在使用phantomjs和茉莉花运行我的规格
答案 0 :(得分:0)
该问题是由于未在我的component.ts文件中导入地图运算符引起的。在单元测试中,此运算符无法解析
import { map } from 'rxjs/operators';