如何使用Karma/Jasmine为Angular 2反应形式编写单元测试用例?

如何使用Karma/Jasmine为Angular 2反应形式编写单元测试用例?,angular,karma-jasmine,angular-reactive-forms,Angular,Karma Jasmine,Angular Reactive Forms,我在Angular 2中开发了一个简单的反应式表单,其中包括用户名、密码和登录按钮。此处按钮默认禁用最多获取电子邮件和密码值。在这里,我试图通过使用karma/Jasmine为按钮启用编写一个测试用例,但是我对这个测试框架还不熟悉,我已经编写了正常的有效和无效的东西,但是没有清晰地编写这个特定的东西。如果有人知道这一点,你能帮我快速开始吗 这是我的反应形式: 签到表 {{useridMessage}} {{passwordMessage}} 登录 测试用例以检查按钮是否已禁用 it('f

我在Angular 2中开发了一个简单的反应式表单,其中包括
用户名
密码
登录
按钮。此处按钮默认禁用最多获取电子邮件和密码值。在这里,我试图通过使用
karma/Jasmine
为按钮启用编写一个测试用例,但是我对这个测试框架还不熟悉,我已经编写了正常的有效和无效的东西,但是没有清晰地编写这个特定的东西。如果有人知道这一点,你能帮我快速开始吗

这是我的反应形式:


签到表
{{useridMessage}}

{{passwordMessage}}
登录
测试用例以检查按钮是否已禁用

it('form should be invalid', async(() => {
    component.authForm.controls['userid'].setValue('');
    component.authForm.controls['password'].setValue('');
    expect(component.authForm.valid).toBeFalsy();

    // update view, once the values are entered
    fixture.detectChanges();
    let btn = fixture.debugElement.query(By.css('carbon-button'));  // fetch button element
    expect(btn.nativeElement.disabled).toBeTruthy();  // check if it is disabled
}));

表单验证的测试用例

组成部分:

public buildFrom() {
   this.loginForm = this.fb.group({
      'email': [undefined, Validators.required],
      'password': [undefined, Validators.required]
   });
}
测试用例:

function setFormValues(fromData) {
 component.loginFrom.control['email].setValue(fromData.email);
 component.loginFrom.control['password].setValue(fromData.password);
}

it('should have form valid", () => {
 component.buildFrom();
 const data = {
   email: 'xyz@abc.com',
   password: 'xyz'
 };
 setFormValues(data);
 expect(component.loginFrom.valid).toBeTruthy();
})


it('should have password', ()=> {
 component.buildFrom();
 const data = {
   email: 'abc@abc.com',
   password: 'abc'
 };
 setFormValues(data);
 expect(component.loginFrom.get('password').value.length).toBeGreaterThan(0);
})

你想写一个测试用例来检查按钮是否被禁用吗?@AmitChigadani是的,没错。如果我们给两个字段输入数据,按钮应该启用,否则按钮将禁用。感谢您的回答,您编写的这个测试用例应该是通过的,因为按钮将处于禁用状态。但这是失败的错误是“预期未定义为真实”