【发布时间】:2020-06-22 10:30:18
【问题描述】:
我正在尝试为我的项目编写一些单元测试,我需要一些帮助。 我有一个输入,我想验证它是否只接受数字/数字,否则它应该是无效的。
TS:
this.form = this.formBuilder.group({
inputNumber: [null, [Validators.required, Validators.min(0)]]});
HTML 模板:
<mat-form-field>
<input matInput placeholder="pls give a number" type="number" step="1" formControlName="inputNumber">
</mat-form-field>
单元测试(*.spec.ts):
it('FormControl only accepts numbers', () => {
let inputNumber = component.form.controls['inputNumber'];
inputNumber.setValue(null);
console.log('Valid :', inputNumber.valid);//valid: false (required)
inputNumber.setValue('any string or !number');
expect(inputNumber.valid).toBe(false);//but returns TRUE
});
谢谢!
【问题讨论】:
-
您的问题是,即使您更新了值,它也不会自动触发 html 表单验证器再次检查。 stackoverflow.com/questions/32260082/…
-
[update] 即使我们调用updateValueAndValidity(),我也有同样的结果。
-
FormControl不知道像type这样的元素属性。如果您希望控件知道非数字输入无效,则需要一个验证器。
标签: angular unit-testing jasmine karma-runner angular-reactive-forms