Сначала исправьте синтаксическую ошибку 1,2
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [TestComponent],
providers: [{ provide: TestingCompilerFactory }]
})
.compileComponents()
.then(() => {
fixture = TestBed.createComponent(TestComponent);
comp = fixture.componentInstance;
});
}); // excess `)` removed
Теперь, на заметную ошибку
Поставщик может принять две формы.
Первое - это значение, которое действует как предоставленное значение и ключ, под которым оно зарегистрировано. Обычно это принимает форму класса, как в следующем примере
const Dependency = class {};
@NgModule({
providers: [Dependency]
}) export default class {}
Второй - это объект со свойством provide
, определяющим ключ, под которым зарегистрирован поставщик, и одним или несколькими дополнительными свойствами, указывающими предоставляемое значение. Простой пример:
const dependencyKey = 'some key';
const Dependency = class {};
@NgModule({
providers: [
{
provide: dependencyKey,
useClass: Dependency
}
]
}) export default class {}
Из приведенного выше вы можете сделать вывод, что вам не удалось указать фактическое значение, указанное под ключом TestingCompilerFactory
.
Чтобы решить эту проблему, напишите
TestBed.configureTestingModule({
declarations: [TestComponent],
providers: [
{
provide: TestingCompilerFactory,
useClass: TestingCompilerFactory
}
]
})
, который является избыточным и может быть заменен на
TestBed.configureTestingModule({
declarations: [TestComponent],
providers: [TestingCompilerFactory]
})
как описано выше.
Примечания
В будущем не следует публиковать вопросы, в которых содержится такая очевидная ошибка - исправьте ее самостоятельно.
Не публикуйте два вопроса как один.