使用rxjs switchmap时,角度5单元测试失败

时间:2018-07-05 15:22:12

标签: angular redux jasmine angular5 karma-jasmine

我正在尝试测试一个组件,该组件在商店中调度了一个动作,然后从该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和茉莉花运行我的规格

1 个答案:

答案 0 :(得分:0)

该问题是由于未在我的component.ts文件中导入地图运算符引起的。在单元测试中,此运算符无法解析

import { map } from 'rxjs/operators';