2017-10-11 3 views
1

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.

Antwort

1

Stellt sich heraus, mein Problem war ich Store in der fixture.debugElement.injector.get('Store') Anruf zitiert. Durch das Entfernen der Anführungszeichen wurde mein Problem behoben.

0

sollten Sie fügen

imports: [ 
    ..., 
StoreModule.forRoot(fromRoot.reducers), 
], 

, die Ihnen helfen

Verwandte Themen