Error: No Provider for Store! in @ngrx 4.x
Error: No Provider for Store! in @ngrx 4.x
将我的项目从@ngrx 2.x 迁移到 4.1.0 时,我遇到了错误消息
NullInjectorError: No provider for Store!
商店已导入,如 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';
将我的项目从@ngrx 2.x 迁移到 4.1.0 时,我遇到了错误消息
NullInjectorError: No provider for Store!
商店已导入,如 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';