html - 如何在单元测试中设置html输入元素的文本内容

标签 html angular typescript unit-testing

我正在为 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

最佳答案

您必须在设置输入值后调度一个 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);

关于html - 如何在单元测试中设置html输入元素的文本内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58113017/

相关文章:

html - 链接到具有特定 HTTP 方法的页面(删除)

html - 在选择选项中添加图标 - Angular 2

javascript - Angular2 中的 'rxjs/Subject' 是什么?

javascript - 获取 HTML canvas 上两个不同位置的坐标

javascript - 如何只显示一次网站预加载器

javascript - XML 表达式中缺少 }

javascript - 从 Angular 6 中的重复控制中获取值

angular - CSS 在表中插入伪元素并将其移到父边界的左/右

angularjs - NSUserDefaults/SharedPreferences 在 TypeScript 中是否有类似的东西

reactjs - React Prop 中的索引签名