将我的项目从@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 {}
答案 0 :(得分:9)
原来我的一些服务是通过
导入商店的import { Store } from '@ngrx/store/src/store'
将导入更改为
import { Store } from '@ngrx/store'
修复了问题。
答案 1 :(得分:0)
当我尝试在角度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
}
...
]
});
```
答案 2 :(得分:0)
对于ngrx 8,使用:
import { provideMockStore } from '@ngrx/store/testing';