Вы импортируете MAGIC_NUMBER
из src/main
, но в src/main
у вас есть следующее:
platformBrowserDynamic([
{
provide: MAGIC_NUMBER,
useValue: 111
}
])
.bootstrapModule(AppModule)
.catch(err => console.error(err));
, которые настраивают платформу. Обратите внимание, что когда вы импортируете файл или его член, может возникнуть побочный эффект. Таким образом, вы загружаете свое приложение. Но тестовая среда уже сделает это за вас. Вот почему у вас есть ошибка. Невозможно bootstrap дважды подать заявку. Чтобы решить эту проблему, необходимо переместить объявление токена за пределы src/main
.
Например, вы можете создать src/app/token.ts
.
import {InjectionToken} from "@angular/core";
export const MAGIC_NUMBER = new InjectionToken<{}>("MAGIC_NUMBER");
и импортировать это как:
import { MAGIC_NUMBER } from "./token";
Более того, вы хотите создать контекст, который делегирует создание экземпляров необходимых классов Angular. Замените TestBed.configureCompiler
на TestBed.configureTestingModule
.
TestBed.configureTestingModule({
providers: [
{
provide: MAGIC_NUMBER,
useValue: 007
},
TestService
]
});
Я также заметил некоторые ошибки в вашем тестовом файле, я собираюсь сделать PR в вашем репозитории github.