在我的一个单元测试中,我试图模拟 @ngrx/store。我已经在另一个 spec 文件中成功地使用了这种技术,但是当我尝试在这个文件中使用它时,我得到了一个注入错误,说“没有 Store 的提供者!”。下面是来自 spec 文件的相关代码:
这个组件和成功使用MockStore类的那个组件唯一的区别在于,这个组件是在自己的模块中进行懒加载,而不是在AppModule中。然而,我尝试在该模块中导入StoreModule,并将StoreModule包含在TestBed导入中,但都没有成功。
beforeEach(async(() => {
const emptyState = { opportunities: { list: { items: [], page: 1, total: 0 } } };
const mockStore = new MockStore<MockAppState>(emptyState);
TestBed.configureTestingModule({
declarations: [
OpportunityListComponent,
FilledArrayPipe
],
imports: [
NgFilterListModule,
FormsModule
],
providers: [
{ provide: OpportunityApi, useValue: apiStub },
{ provide: Store, useValue: mockStore },
{ provide: Router, useValue: routerStub }
]
}).compileComponents();
}));
beforeEach(() => {
store = fixture.debugElement.injector.get('Store');
});
这个组件和成功使用MockStore类的那个组件唯一的区别在于,这个组件是在自己的模块中进行懒加载,而不是在AppModule中。然而,我尝试在该模块中导入StoreModule,并将StoreModule包含在TestBed导入中,但都没有成功。