我正在遵循测试ngrx商店的官方文档:https://ngrx.io/guide/store/testing
即使注入MockStore的最简单实现也具有以下错误:
NullInjectorError: R3InjectorError(CompilerModule)[MockStore -> MockStore]:
NullInjectorError: No provider for MockStore!
error properties: Object({ ngTempTokenPath: null, ngTokenPath: [ 'MockStore', 'MockStore' ] })
我的代码如下:
import { TestBed } from '@angular/core/testing';
import { provideMockStore, MockStore } from '@ngrx/store/testing';
describe('Auth Guard', () => {
// @ts-ignore
let store: MockStore;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
// any modules needed
],
providers: [
provideMockStore(),
// other providers
],
});
store = TestBed.inject(MockStore);
});
it('should create', () => {
expect(store).toBeTruthy();
});
});
我正在运行@ ngrx / store @ 8.6.0
答案 0 :(得分:3)
已更新
基于讨论store = TestBed.inject(Store);
而不是MockStore
就足以实现所需的行为。
原始
为时过早,
在测试中获取它:
it('should create', inject([Store], (store) => {
expect(store).toBeTruthy();
}));
不确定,但是您可以尝试调用compileComponents。
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [
// any modules needed
],
providers: [
provideMockStore(),
// other providers
],
}).compileComponents();
store = TestBed.inject(MockStore);
});