关于在Angular2中模拟Formbuilder,我有两个问题。

1)如何在规范中模拟formBuilder?我们可以使用任何给定的模拟吗?例如,我想更新规范中的表单值,然后进行测试以查看该表单是否仍然有效-或测试组件中更新formbuilder组的方法的功能,或者确定是否有一个formbuilder组已验证。

2)鉴于fb是规范中的Formbuilder的DI注入(inject),我该如何处理以下错误?
null is not an object (evaluating 'this.fb.group')
当组件如下时:

export class LoginComponent implements OnInit {
  constructor( private fb: FormBuilder ) {}

  ngOnInit() {
    this.loginForm = this.fb.group({
      'email': this.user.email,
      'password': this.user.password
    });
  }
}

最佳答案

如果您使用的是Angular2的最新版本,并且想使用其测试平台,则这里是一个有效的规范。

describe('Login Component', () => {
  let comp: LoginComponent;
  let fixture: ComponentFixture<LoginComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [LoginComponent],
      providers: [
        FormBuilder
      ]
      }).compileComponents()
      .then(() => {
        fixture = TestBed.createComponent(LoginComponent);
        comp = fixture.componentInstance;
      });
  }));

  it('user should update from form changes', fakeAsync(() => {
    const testUser = {
      email: '[email protected]',
      password: '12345'
    };
    comp.loginForm.controls['email'].setValue(testUser.email);
    comp.loginForm.controls['password'].setValue(testUser.password);
    expect(comp.user).toEqual(testUser);
  }));
});

关于Angular2 FormBuilder单元测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39712150/

10-11 01:19