プロジェクトを@ngrx 2.xから4.1.0に移行すると、エラーメッセージが表示されました
NullInjectorError:ストアのプロバイダーがありません!
ストアは docs に示すようにインポートされました:
import { StoreModule as NgRxStoreModule } from '@ngrx/store';
@NgModule({
imports: [
NgRxStoreModule.forRoot(reducerMap, {
initialState: initial
}),
StoreRouterConnectingModule,
EffectsModule.forRoot(effects)
],
providers: [AppActions]
})
export class StoreModule {}
私のサービスのいくつかが経由でストアをインポートしたことが判明
import { Store } from '@ngrx/store/src/store'
インポートを
import { Store } from '@ngrx/store'
問題を修正しました。
angular 7。
私の解決策は:
describe
の本文にストアモックを定義します。let storeMock;
beforeEach
セクションで初期化します。 beforeEach(async () => {
storeMock = {
dispatch: jasmine.createSpy("dispatch"),
pipe: jasmine.createSpy("pipe").and.returnValue(from([{
...
requestTimeout: 5000,
...
}]))
};
TestBed.configureTestingModule
に定義します。 TestBed.configureTestingModule({
imports: [
HttpClientTestingModule,
],
providers: [
...
{
provide: Store,
useValue: storeMock
}
...
]
});
```
Ngrx 8の場合:
import { provideMockStore } from '@ngrx/store/testing';