我开始学习Angular 2和单元测试,我在测试reducers时遇到了一些问题,然后尝试测试同样使用reducer的组件。
问题是,因为我正在测试调度功能是否正常,所以商店所做的更改会持续存在并使其他测试失败。
这是我的代码:
reducer.spec.ts
it('should dispatch action DATA_FETCH', () => {
const mockData = [
{ id: 0, name: 'Name 01' },
{ id: 1, name: 'Name 02' }
];
const mockInitial = {
..._data,
customers: mockData
};
_store.dispatch({
type: DATA_FETCH,
payload: mockData
});
expect(_data).toEqual(mockInitial);
});
// This test pass
然后我尝试测试从这个商店共享相同数据的组件,如下所示:
it('should have initial value array to be empty', () => {
expect(component.customers).toEqual([]);
});
但我一直收到这样的错误:
预期[对象({id:0,名称:'名称01'},{id:1,名称:'名称02'})]等于[]
在我完成该部分的测试后,有没有办法销毁/清理商店?
我认为我收到此错误的原因是因为我使用的是TestModule,它基本上是一个"克隆"我的主要模块的模块,这样我就不需要为我正在运行的每个测试多次声明相同的事情。例如,商店,而不是在我的每个测试中配置它,我在这个TestModule上配置它然后只在我的单元测试中导入它。也许这就是原因,但我不知道如何解决它。