Angular2 FormBuilder单元测试

时间:2016-09-26 20:50:42

标签: angular unit-testing mocking angular2-forms

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

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

2)如果fb是规范中的Formbuilder的DI注入,我如何处理以下错误?

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
    });
  }
}

2 个答案:

答案 0 :(得分:6)

如果您使用的是最新版本的Angular2,并且想要使用他们的测试平台,那么这是一个可行的规范。

    E/DownloadTask: Failed to download: 8 due to The provided token has expired. (Service: Amazon S3; Status Code: 400; Error Code: ExpiredToken; Request ID: 6BEA65FAFAD54BF4)

答案 1 :(得分:2)

我实际构建了一个FormBuilder的新实例,并将其提供给正在测试的组件。

sut = new LoginComponent(service, new FormBuilder());

如果要修改属于ControlGroup / FormGroup的任何控件,可以按以下方式执行:

(<Control>sut.loginForm.controls['Name']).updateValue('Jon Doe');

您也可以测试有效性:

sut.loginForm.valid

更新

describe('Component', () => {
  let sut: Component;
  let service: Service;

  beforeEach(() => {
    service = new Service(null);
    sut = new Component(new FormBuilder(), service);
        });

  it('should have object initialized', () => {
    expect(sut.selectedBankAccount).toBeDefined();
  });
...