html - 如何在单元测试中设置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
解决方案
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);
推荐阅读
- node.js - 每个视图多个模型和多个模型的单个控制器?
- python - Pandas:重新采样数据帧以匹配不同数据帧的 DatetimeIndex
- nosql - 根据日期与父对象一起查询一对多关系的子对象
- c# - 如何修复“DATA”是一种类型,在给定的上下文中无效
- google-chrome - 当握手中没有发送“客户端请求”时,Chrome 如何知道提供客户端证书?
- amazon-web-services - 如何连接到 Cloudformation 堆栈/管道中的 CodeCommit 存储库
- ios - “‘isSuccess’由于‘内部’保护级别而无法访问”,AlamoFire 不像以前那样工作
- javascript - 为什么我可以在 useState>... 中增加一个 const 可以正常工作,但 '++' 不行
- angular - 为什么字符串值没有显示在 h3 标签下的角度模板中?
- react-native - 为Android安装本机包