Angular NullInjectorError:没有存储的提供程序

Angular NullInjectorError:没有存储的提供程序,angular,unit-testing,karma-jasmine,Angular,Unit Testing,Karma Jasmine,运行单元测试时,我收到以下错误: Error: StaticInjectorError(DynamicTestModule)[BlogService -> Store]: StaticInjectorError(Platform: core)[BlogService -> Store]: NullInjectorError: No provider for Store! 以下是我的测试文件中的代码: import { TestBed, inject } from '

运行单元测试时,我收到以下错误:

Error: StaticInjectorError(DynamicTestModule)[BlogService -> Store]: 
  StaticInjectorError(Platform: core)[BlogService -> Store]: 
    NullInjectorError: No provider for Store!
以下是我的测试文件中的代码:

import { TestBed, inject } from '@angular/core/testing';

import { BlogService } from './blog.service';

describe('BlogService', () => {
  beforeEach(() => {
    TestBed.configureTestingModule({
      providers: [BlogService]
    });
  });

  it('should be created', inject([BlogService], (service: BlogService) => {
    expect(service).toBeTruthy();
  }));
});

我不知道为什么会发生这个错误。我认为“inject”调用实例化了服务。

如果您的服务引用的是ngrx存储,那么您需要导入ngrx模块。我现在假设您正在AppModule中执行此操作。您需要在您的测试床模块中复制它。我通常会创建一个测试ngrx模块来完成所有这些,然后我可以将其导入引用Store的任何规范文件中

如果您得到错误
属性'provideStore'在类型'typeof StoreModule
上不存在,请使用
provideStore
的根
。
也看看这里有类似的问题


干杯

您可以使用ngrx模拟存储:

import { provideMockStore } from '@ngrx/store/testing';

beforeEach(() => {
    TestBed.configureTestingModule({
      providers: [provideMockStore({})],
    });
  });

您可以定义特定状态并将其作为方法参数传递。

谢谢您的解释。
import { provideMockStore } from '@ngrx/store/testing';

beforeEach(() => {
    TestBed.configureTestingModule({
      providers: [provideMockStore({})],
    });
  });