2017-10-11 22 views
1

私のユニットテストの1つでは、私は@ ngrx/storeを模倣しようとしています。私は別のspecファイルで正常に技術を使用しましたが、このいずれかでそれを使用しようとすると、私は以下No provider for Store!はspecファイルから該当するコードであると言って射出エラーを取得しています:角度 - カルマ - 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を含めることはできませんでした。

答えて

1

私はfixture.debugElement.injector.get('Store')コールでStoreを引用していました。引用符を削除すると問題が解決しました。

0

あなたは

役立つかもしれない

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

を追加する必要があります

関連する問題