反应形式的单元测试 - 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 }
]