我正在尝试测试此简单的测试服务,该服务基本上通过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_require(http://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_require(http://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_require(http://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
我不确定TestBed.configureCompiler
的作用,以前没有看到过。尝试使用TestBed.configureTestingModule(....)