Angular 单元测试 - 如何通过在 TestBed 提供程序中使用 useValue 将依赖项注入 TestBed

Angular Unit Test - How to inject dependencies to TestBed by using useValue in the TestBed provider

我要测试的服务具有以下构造函数:

constructor(@Inject('enviroment') environment) {
    this.initConfig(environment);
}

environment 在 app.module 中由提供者提供:

{ provide: 'environment', useValue: environment }

所以我配置了TestBed如下:

beforeEach(() => {
    TestBed.configureTestingModule({
        providers: [{ provide: 'environment', useValue: testEnv }, TestService]
    });
    service = TestBed.get(TestService);
});

我不断得到:

Error: StaticInjectorError(DynamicTestModule)[enviroment]: StaticInjectorError(Platform: core)[enviroment]: NullInjectorError: No provider for enviroment!

代码本身在 serving/building 时工作正常,所以我假设错误出在我如何配置 TestBed?我也试过 useFactory 没用。

beforeEach(() => {
    TestBed.configureTestingModule({
        providers: [{ provide: 'environment', useFactory: ()=>testEnv }, TestService]
    });
    service = TestBed.get(TestService);
});

我认为这只是一个打字错误。

在 environment

中缺少 n
constructor(@Inject('enviroment') environment) {