没有 TestingCompilerFactory 的提供者
No provider for TestingCompilerFactory
这是我的测试文件,我正在尝试找出阻止我运行成功测试的错误:
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { Component, Directive, Input, OnInit } from '@angular/core';
import { TestComponent } from './test.component';
import { NgbDropdownModule, NgbCollapse } from '@ng-bootstrap/ng-bootstrap';
import { CommonModule } from '@angular/common';
import { Routes } from '@angular/router';
import { RouterTestingModule } from '@angular/router/testing';
import { NO_ERRORS_SCHEMA } from '@angular/core';
import {BrowserDynamicTestingModule, platformBrowserDynamicTesting} from '@angular/platform-browser-dynamic/testing';
let comp: TestComponent;
let fixture: ComponentFixture<MyComponent>;
describe('TestComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [ TestComponent ],
providers: [
// DECLARE PROVIDERS HERE
{ provide: TestingCompilerFactory }
]
}).compileComponents()
.then(() => {
fixture = TestBed.createComponent(TestComponent);
comp = fixture.componentInstance;
});
}));
it('should be created', () => {
expect(TestComponent).toBeTruthy();
});
我收到这个错误,我猜是因为我没有正确包装它。
error TS1005: ';' expected.
但我也得到了
No provider for TestingCompilerFactory
首先修正你的语法错误1,2
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [TestComponent],
providers: [{ provide: TestingCompilerFactory }]
})
.compileComponents()
.then(() => {
fixture = TestBed.createComponent(TestComponent);
comp = fixture.componentInstance;
});
}); // excess `)` removed
现在,进入值得注意的错误
提供者可以采用两种形式。
第一个是一个值,它既充当提供的值又充当其注册的键。这通常采用 class 的形式,如下例
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]
})
如上所述。
注释
以后不要 post 包含如此明显错误的问题 - 请自行修复。
不要post两个问题合二为一。
这是我的测试文件,我正在尝试找出阻止我运行成功测试的错误:
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { Component, Directive, Input, OnInit } from '@angular/core';
import { TestComponent } from './test.component';
import { NgbDropdownModule, NgbCollapse } from '@ng-bootstrap/ng-bootstrap';
import { CommonModule } from '@angular/common';
import { Routes } from '@angular/router';
import { RouterTestingModule } from '@angular/router/testing';
import { NO_ERRORS_SCHEMA } from '@angular/core';
import {BrowserDynamicTestingModule, platformBrowserDynamicTesting} from '@angular/platform-browser-dynamic/testing';
let comp: TestComponent;
let fixture: ComponentFixture<MyComponent>;
describe('TestComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [ TestComponent ],
providers: [
// DECLARE PROVIDERS HERE
{ provide: TestingCompilerFactory }
]
}).compileComponents()
.then(() => {
fixture = TestBed.createComponent(TestComponent);
comp = fixture.componentInstance;
});
}));
it('should be created', () => {
expect(TestComponent).toBeTruthy();
});
我收到这个错误,我猜是因为我没有正确包装它。
error TS1005: ';' expected.
但我也得到了
No provider for TestingCompilerFactory
首先修正你的语法错误1,2
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [TestComponent],
providers: [{ provide: TestingCompilerFactory }]
})
.compileComponents()
.then(() => {
fixture = TestBed.createComponent(TestComponent);
comp = fixture.componentInstance;
});
}); // excess `)` removed
现在,进入值得注意的错误
提供者可以采用两种形式。
第一个是一个值,它既充当提供的值又充当其注册的键。这通常采用 class 的形式,如下例
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]
})
如上所述。
注释
以后不要 post 包含如此明显错误的问题 - 请自行修复。
不要post两个问题合二为一。