问题描述
我已经编写了一项服务来检查表单值是否已更改,以便可以像下面那样更新markAsPrisitine
export class FormStateService implements OnDestroy{
subscription = new Subscription();
constructor() { }
ngOnDestroy(): void {
this.subscription.unsubscribe();
}
isFormPrisitine(formName: FormGroup) {
console.log('form',formName);
const defaultValue = formName.value;
const observer = formName.valueChanges
.pipe(debounceTime(200))
.subscribe(value => {
if (JSON.stringify(defaultValue) === JSON.stringify(value)) {
return formName.markAsPristine();
}
});
this.subscription.add(observer);
}
}
对于上述服务,我编写了如下所示的规范,但规范的问题是如何检查formValue是否更改。有人可以告诉我如何模拟formvalue更改
describe('Service: FormState',() => {
let service: FormStateService;
let formGroupMock: FormGroup;
let formBuilderMock: any;
beforeEach(() => {
Testbed.configureTestingModule({
providers: [FormStateService]
});
service = Testbed.inject(FormStateService);
formGroupMock = new FormGroup({
field : new FormControl()
});
formBuilderMock = jasmine.createSpyObj('FormBuilder',['group']);
formBuilderMock.group.and.returnValue(formGroupMock);
});
it('should instantiate the service',() => {
expect(service).toBeTruthy();
});
it('it should make',() => {
formGroupMock.patchValue({
field: {
name: 'test1',age: '11'
}
});
spyOn(service,'isFormPrisitine').and.callThrough();
service.isFormPrisitine(formGroupMock);
expect(service.isFormPrisitine).toHaveBeenCalled();
});
});
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)