Angular Reactive Form 检查 FormControl 是否存在于测试中
Angular Reactive Form check if FormControl is existing in Test
我在 Angular 5 中有一个反应形式,它正在工作。此表格有 e.q。一个输入字段和一个复选框。
<div class="form-group" *ngIf="!myForm.controls.myCheckbox.value">
<input class="form-control" formControlName="myField"
</div>
<div class="form-group">
<input type="checkbox" formControlName="myCheckbox">
</div>
复选框用于处理输入域的可见性:如果选中输入域是不可见的,反之亦然。
我正在用 jasmine 编写测试,使用 TestBed 配置 componentFixture。
我试图获取 formControl 并检查是否存在,例如使用以下语句,但它不起作用。
let myField= component.driverForm.controls['myField'];
let myCheckbox= component.driverForm.controls['myCheckbox'];
myCheckbox.setValue(true);
fixture.detectChanges();
expect(myField).toBeFalsy("myField not existing");
Expected FormControl( ... ) to be falsy 'myField not existing'.
我现在的问题是,在 jasmine 测试中单击复选框时如何测试表单控件 "myField" 是否可见/不可见?
好的,我找到了解决方案。首先我需要通过以下方式获取元素:
const el = fixture.debugElement.nativeElement;
let myField= el.querySelector('input[formControlName=myField]');
expect(myField).toBeTruthy();
let myCheckboxControl= component.driverForm.controls['myCheckbox'];
expect(myCheckboxControl.value).toEqual(false);
//set checkbox state to true
myCheckboxControl.setValue(true);
fixture.detectChanges();
然后我需要在更新复选框后再次获取输入字段:
myField = el.querySelector('input[formControlName=myField]');
expect(myField).toBeNull("myField not existing");
我在 Angular 5 中有一个反应形式,它正在工作。此表格有 e.q。一个输入字段和一个复选框。
<div class="form-group" *ngIf="!myForm.controls.myCheckbox.value">
<input class="form-control" formControlName="myField"
</div>
<div class="form-group">
<input type="checkbox" formControlName="myCheckbox">
</div>
复选框用于处理输入域的可见性:如果选中输入域是不可见的,反之亦然。
我正在用 jasmine 编写测试,使用 TestBed 配置 componentFixture。
我试图获取 formControl 并检查是否存在,例如使用以下语句,但它不起作用。
let myField= component.driverForm.controls['myField'];
let myCheckbox= component.driverForm.controls['myCheckbox'];
myCheckbox.setValue(true);
fixture.detectChanges();
expect(myField).toBeFalsy("myField not existing");
Expected FormControl( ... ) to be falsy 'myField not existing'.
我现在的问题是,在 jasmine 测试中单击复选框时如何测试表单控件 "myField" 是否可见/不可见?
好的,我找到了解决方案。首先我需要通过以下方式获取元素:
const el = fixture.debugElement.nativeElement;
let myField= el.querySelector('input[formControlName=myField]');
expect(myField).toBeTruthy();
let myCheckboxControl= component.driverForm.controls['myCheckbox'];
expect(myCheckboxControl.value).toEqual(false);
//set checkbox state to true
myCheckboxControl.setValue(true);
fixture.detectChanges();
然后我需要在更新复选框后再次获取输入字段:
myField = el.querySelector('input[formControlName=myField]');
expect(myField).toBeNull("myField not existing");