我正在尝试测试通过键盘输入哪个值的事件。我的问题是在将值设置为输入字段后,当我打印它时打印,但是当我在whenStable()中打印它时它打印为空。我想知道为什么在Whitstable()函数中重置此值。以及我该如何解决?
我已经提到:Updating input html field from within an Angular 2 test来编写此测试用例。
it('Test input field value. ', async () => {
const divDescription = fixture.debugElement.query(By.css('#costDescription'));
divDescription.nativeElement.value = 'text';
divDescription.nativeElement.dispatchEvent(new Event('input'));
fixture.detectChanges();
console.log('sendInput : ', divDescription.nativeElement.value); // prints 'text'
fixture.whenStable().then(() => {
console.log('sendInput : ', divDescription.nativeElement.value); // prints ''
expect(divDescription.nativeElement.value).toContain('text');
});
});
答案 0 :(得分:0)
您必须在wheStable内部移动“更改检测”呼叫
it('Test input field value. ', async () => {
const divDescription = fixture.debugElement.query(By.css('#costDescription'));
divDescription.nativeElement.value = 'text';
divDescription.nativeElement.dispatchEvent(new Event('input'));
console.log('sendInput : ', divDescription.nativeElement.value); // prints 'text'
fixture.whenStable().then(() => {
fixture.detectChanges(); // moved inside
console.log('sendInput : ', divDescription.nativeElement.value);
expect(divDescription.nativeElement.value).toContain('text');
});
});