在我的一個單元測試中,我試圖嘲笑@ ngrx/store。我已經成功地使用該技術在其他規範文件,但試圖在這一一個使用它的時候,我發現了一個注射錯誤說No provider for Store!
下面是從規範文件中的相關代碼:Angular - Karma - ngrx - 沒有店鋪提供商
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以及在TestBed導入中包含StoreModule,但都無濟於事。