In einem meiner Komponententests versuche ich @ ngrx/store zu mocksen. Ich habe die Technik erfolgreich in einer anderen Spec-Datei verwendet, aber wenn man versucht, es in dieser zu verwenden, ich bin eine Injektion Fehler immer sagen No provider for Store!
Im Folgenden finden Sie die entsprechenden Code aus der Spec-Datei:Angular - Karma - ngrx - Kein Anbieter für Store
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');
});
Die einzige Der Unterschied zwischen dieser Komponente und derjenigen, die die MockStore-Klasse erfolgreich verwendet, besteht darin, dass diese Komponente in einem eigenen Modul getrennt von AppModule geladen wird. Ich habe jedoch versucht, StoreModule in diesem Modul zu importieren und StoreModule in die TestBed-Importe zu integrieren, beides ohne Erfolg.