Angular 8:具有不同配置的平台已创建。请先销毁它

问题描述 投票:0回答:1

我正在尝试测试此简单的测试服务,该服务基本上通过getMagicNumber api提供了幻数。它的构造函数通过平台级别Injector提供的Injection Token注入一个不可思议的数字。

但是在针对测试服务执行单元测试时,出现以下错误

Chrome 79.0.3945(Windows 10.0.0)错误毕竟引发了错误错误:已创建具有不同配置的平台。请先销毁它。在assertPlatform(http://localhost:9876/_karma_webpack_/webpack:/node_modules/@angular/core/fesm2015/core.js:31506:1)在http://localhost:9876/_karma_webpack_/webpack:/node_modules/@angular/core/fesm2015/core.js:31489:1在Module ../ src / main.ts(http://localhost:9876/_karma_webpack_/webpack:/src/main.ts:11:23)在webpack_requirehttp://localhost:9876/_karma_webpack_/webpack:/webpack/bootstrap:78:1)在Module ../ src / app / test.service.ts(http://localhost:9876/_karma_webpack_/main.js:452:66)在webpack_requirehttp://localhost:9876/_karma_webpack_/webpack:/webpack/bootstrap:78:1)在Module ../ src / app / test.service.spec.ts(http://localhost:9876/_karma_webpack_/webpack:/src/app/test.service.spec.ts:1:1)在webpack_requirehttp://localhost:9876/_karma_webpack_/webpack:/webpack/bootstrap:78:1)在webpackContext(http://localhost:9876/_karma_webpack_/webpack:/src sync .spec.ts $:9:1)Chrome 79.0.3945(Windows 10.0.0):执行3之3错误(0.146秒/ 0.127秒)

这是来自test.service.spec.ts文件的单元测试

    import { TestBed, inject } from "@angular/core/testing";
import { TestService } from "./test.service";
import { MAGIC_NUMBER } from "src/main";

describe("Testing Test Service", () => {
  testService: TestService;
  beforeEach(() => {
    TestBed.configureCompiler({
      providers: [
        {
          provide: MAGIC_NUMBER,
          useValue: 007
        },
        TestService
      ]
    });

    this.testService = TestBed.get(TestService);
  });
  it("Should create TestService", () => {
    expect(this.testService).toBeTruthy();
  });
});

这里是测试服务的代码

import { Injectable, Inject } from "@angular/core";
import { MAGIC_NUMBER } from "src/main";

@Injectable({ providedIn: "root" })
export class TestService {
  constructor(@Inject(MAGIC_NUMBER) private magicNumber) {}
  getMagicNumber() {
    return this.magicNumber;
  }
}

如果我在test.service.spec.ts文件中添加了这一行代码,我将得到上述错误

 TestBed.configureCompiler({
      providers: [
        {
          provide: MAGIC_NUMBER,
          useValue: 007
        },
        TestService
      ]
    });

如何解决此问题。这是源代码的链接。source-code-link

angular karma-jasmine karma-runner
1个回答
0
投票

我不确定TestBed.configureCompiler的作用,以前没有看到过。尝试使用TestBed.configureTestingModule(....)

© www.soinside.com 2019 - 2024. All rights reserved.