首页 > 解决方案 > 如何在单元测试中设置html输入元素的文本内容

问题描述

我正在为 Angular 应用程序运行单元测试,我想通过单元测试设置这个输入元素的文本内容。我正在使用 jasmine

<input type="text" id="accountid" class="form-control col-sm-3" [(ngModel)]="record.accountid" name="accountid" required>

我试过了,但它不工作

let formData = fixture.debugElement.query(By.css('#accountid'));
formData.nativeElement.value = 22;
fixture.detectChanges();
console.log(formData.nativeElement.textContent);//expected to print 22
expect(formData.nativeElement.textContent).toBe(22);//fails

标签: htmlangulartypescriptunit-testing

解决方案


input您必须在设置它的值后调度一个事件:

let formData = fixture.debugElement.query(By.css('#accountid'));
    formData.nativeElement.value = 22;
    formData.nativeElement.dispatchEvent(new Event('input'));

expect(formData.nativeElement.value).toBe(22);

推荐阅读