Angular 无法测试存储选择订阅

Angular 无法测试存储选择订阅,angular,redux,jasmine,Angular,Redux,Jasmine,尝试测试此组件ngOnInit()时出现错误“无法读取未定义的属性‘subscribe’” 我添加了select.and.callFake(),它在不久前解决了这个问题,但现在不起作用 ngOnInit() { this.store.select(STORE_USER_REPORT_INFO_STATE).subscribe((userReportInfo: any[]) => { if(userReportInfo){

尝试测试此组件ngOnInit()时出现错误“无法读取未定义的属性‘subscribe’”

我添加了select.and.callFake(),它在不久前解决了这个问题,但现在不起作用

ngOnInit() {
        this.store.select(STORE_USER_REPORT_INFO_STATE).subscribe((userReportInfo: any[]) => {
            if(userReportInfo){
                userReportInfo.forEach((data)=> {
                    if(data.InstanceId == this.id) {
                        this.isFavorite = data.IsFavorite;
                    }
                });
            }
        });
    }


describe('OnlineReportPopupComponent', () => {
let component: OnlineReportPopupComponent;
let fixture: ComponentFixture<OnlineReportPopupComponent>;
let mockStoreUserReportAccessObservable: Observable<any>;
let mockStore;
beforeEach(() => {

        mockStore = jasmine.createSpyObj("Store", ["select"]);
        mockStore.select.and.callFake((stateType: string) => {
            switch (stateType) {
                case STORE_USER_REPORT_INFO_STATE:
                    return mockStoreUserReportAccessObservable;
            }
        });

TestBed.configureTestingModule({
            declarations: [ OnlineReportPopupComponent],
            providers: [
                {provide: Store, useValue: mockStore}
            ]
        });
fixture = TestBed.createComponent(OnlineReportPopupComponent);
        component = fixture.debugElement.componentInstance;
fixture.detectChanges();

 });
}

ngOnInit(){
this.store.select(store\u USER\u REPORT\u INFO\u STATE).subscribe((userReportInfo:any[])=>{
if(userReportInfo){
userReportInfo.forEach((数据)=>{
if(data.InstanceId==this.id){
this.isFavorite=data.isFavorite;
}
});
}
});
}
描述('OnlineReportPopupComponent',()=>{
let组件:OnlineReportPopupComponent;
let夹具:组件夹具;
让mockStoreUserReportAccessObservable:Observable;
让我们来储存;
在每个之前(()=>{
mockStore=jasmine.createSpyObj(“Store”[“select”]);
mockStore.select.and.callFake((stateType:string)=>{
开关(状态类型){
案例库\用户\报告\信息\状态:
返回mockStoreUserReportAccessObservable;
}
});
TestBed.configureTestingModule({
声明:[OnlineReportPopupComponent],
供应商:[
{提供:存储,使用值:mockStore}
]
});
fixture=TestBed.createComponent(OnlineReportPopupComponent);
组件=fixture.debugElement.componentInstance;
fixture.detectChanges();
});
}

好吧,似乎没有多少开发人员每天都在做UT:p

可以通过实例化可观察对象来解决此问题:

mockStoreUserReportAccessObservable = new Observable<any>();
mockStoreUserReportAccessObservable=新的Observable();

好吧,似乎没有多少开发人员每天都在做UT:p

可以通过实例化可观察对象来解决此问题:

mockStoreUserReportAccessObservable = new Observable<any>();
mockStoreUserReportAccessObservable=新的Observable();