【问题标题】:How to set text content of html input element in unit test如何在单元测试中设置html输入元素的文本内容
【发布时间】:2020-01-26 12:13:15
【问题描述】:

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

【问题讨论】:

    标签: html angular typescript unit-testing


    【解决方案1】:

    您必须在设置完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);
    

    【讨论】:

    • 感谢 Chrillewoodz,但这并没有设置输入元素的文本内容,在每个语句之后尝试了 fixture.detectchanges,没有工作
    • @karansys 我认为您不应该测试textContent,而应该测试值。
    • 谢谢 :) 那行得通,你能编辑你的答案,所以我会把它标记为正确
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 2014-07-21
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 2019-08-15
    相关资源
    最近更新 更多