2020-11-03
2189 0在项目中定义了自定义的验证器,代码如下:
export function myValidator(minNum): ValidatorFn {
return (control: AbstractControl) => {
let flag = true;
if (control.value < minNum && control.value > 0) {
flag = false;
}
return !flag ? { 'myValidator': { value: control.value } } : null;
};
}
表单formgroup使用了Mock,所以自定义验证器代码没有被覆盖。如何为自定义验证器ValidatorFn写单元测试呢?如何Mock自定义验证器ValidatorFn呢?我是这么做的。
首先import自定义验证器:
import { TestComponent, myValidator } from './test.component';
单元测试代码如下:
it('myValidator not return null', () => {
expect(myValidator(50)(<AbstractControl>{
value: 20
})).toEqual({ 'myValidator': { value: 20 } });
});
it('myValidator return null', () => {
expect(myValidator(50)(<AbstractControl>{
value: 0
})).toEqual(null);
});
大家根据自己实际情况操作吧。如有更好的方法,留言告诉我,谢谢了。