Angular Karma测试对象:无法读取未定义的属性“未定义”

时间:2020-05-07 15:50:58

标签: angular karma-jasmine ngxs

我一直在这个问题上停留,我现在不解决该问题或找到解决方案。

我有一个角度服务,可用来从NGXS商店的购物清单中获取一日游记录。

但是,它在 ng测试中引发错误,提示“无法读取未定义的属性'undefined'”

服务中的代码看起来很简单。

getDataFromStore(daySelected: string): DailyShopList {
    return this.store.selectSnapshot<DailyShopList>(
        state => state.shoppingList.dailyEntries[daySelected] <--- issue is here
    );
}

如果您查看 state => state.shoppingList.dailyEntries [daySelected] 行, 这是我得到错误的地方。 从对象末尾删除 [daySelected] 时,没有任何错误。

因此,在我的测试文件中,我试图模拟来自商店的数据。但是它仍然抛出错误。

describe('ShoppingListService', () => {
    let service: ShoppingListService;
    const data = {
        state: {
            shoppingList: {
                dailyEntries: {
                    mon: {},
                    tue: {},
                },
            },
        },
    };

    beforeEach(() => {
        TestBed.configureTestingModule({
            imports: [
                HttpClientTestingModule,
                NgxsModule.forRoot([MyNGXSstate]),
            ],
        });
        service = TestBed.inject(ShoppingListService);
        const store: Store = TestBed.get(Store);

        spyOn(store, 'selectSnapshot').and.returnValue(data); // trying to mock data from store
    });

    it('should be created', () => {
        expect(service).toBeTruthy();
    });
});

我想念什么?

谢谢。

0 个答案:

没有答案