反应形式的单元测试 - formBuilder 错误
Unit test in reactive form - error on formBuilder
我是单元测试的新手,所以我的问题听起来有点菜鸟。
我在 Angular 7 中有一个反应形式,我想进行我的第一个单元测试,但我遇到了一个错误
TypeError: Cannot read property 'group' of undefined
我初始化我的表单:
public initForms (): void {
this.myForm = this.formBuilder.group({
id: [tempData.id],
firstName: [tempData.firstName],
lastName: [tempData.lastName],
company: [tempData.company]
});
}
在我的测试文件中有:
describe('ContactListComponent', () => {
let component: ContactListComponent;
let fixture: ComponentFixture<ContactListComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
CommonModule,
ReactiveFormsModule,
FormsModule
],
providers: [ {provide:FormBuilder}]
declarations: [ContactListComponent]
schemas: [NO_ERRORS_SCHEMA]
}).compileComponents().then(() => {
fixture = TestBed.createComponent(ContactListComponent);
component = fixture.componentInstance;
component.initForms();
});
}));
it('should create', () => {
expect(component).toBeTruthy();
});
});
如果我删除行 component.initForms();
单个测试将通过,但现在我想开始真正的测试
请帮忙,
提前致谢
从您的 TestBed.configureTestingModule
调用中删除 providers: [ {provide:FormBuilder}]
行。
FormBuilder
已通过导入 ReactiveFormsModule
提供,因此无需再次提供。
如果您确实需要覆盖提供程序,请使用此处指定的语法:https://angular.io/guide/dependency-injection-providers#the-provider-object-literal
例如:
providers: [
FormBuilder,
{ provide: FormBuilder, useClass: OtherFormBuilder },
{ provide: FormBuilder, useExisting: OtherFormBuilder },
{ provide: FormBuilder, useValue: otherFormBuilder },
{ provide: FormBuilder, useFactory: () => otherFormBuilder }
]
我是单元测试的新手,所以我的问题听起来有点菜鸟。 我在 Angular 7 中有一个反应形式,我想进行我的第一个单元测试,但我遇到了一个错误
TypeError: Cannot read property 'group' of undefined
我初始化我的表单:
public initForms (): void {
this.myForm = this.formBuilder.group({
id: [tempData.id],
firstName: [tempData.firstName],
lastName: [tempData.lastName],
company: [tempData.company]
});
}
在我的测试文件中有:
describe('ContactListComponent', () => {
let component: ContactListComponent;
let fixture: ComponentFixture<ContactListComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
CommonModule,
ReactiveFormsModule,
FormsModule
],
providers: [ {provide:FormBuilder}]
declarations: [ContactListComponent]
schemas: [NO_ERRORS_SCHEMA]
}).compileComponents().then(() => {
fixture = TestBed.createComponent(ContactListComponent);
component = fixture.componentInstance;
component.initForms();
});
}));
it('should create', () => {
expect(component).toBeTruthy();
});
});
如果我删除行 component.initForms();
单个测试将通过,但现在我想开始真正的测试
请帮忙,
提前致谢
从您的 TestBed.configureTestingModule
调用中删除 providers: [ {provide:FormBuilder}]
行。
FormBuilder
已通过导入 ReactiveFormsModule
提供,因此无需再次提供。
如果您确实需要覆盖提供程序,请使用此处指定的语法:https://angular.io/guide/dependency-injection-providers#the-provider-object-literal
例如:
providers: [
FormBuilder,
{ provide: FormBuilder, useClass: OtherFormBuilder },
{ provide: FormBuilder, useExisting: OtherFormBuilder },
{ provide: FormBuilder, useValue: otherFormBuilder },
{ provide: FormBuilder, useFactory: () => otherFormBuilder }
]