【问题标题】:Angular2 Karma Test - How to make a form field "dirty"?Angular2 Karma 测试 - 如何使表单字段“脏”?
【发布时间】:2016-06-14 14:51:52
【问题描述】:

我有一个要测试的表单,它有多个输入。输入保存模糊,然后验证表单并检查是否有任何字段是脏的并保存。

问题是,无论我尝试什么,我都无法让表单在测试中显示为脏。我试过了

element.querySelector('#id').value = 'Text';

并且我已经尝试更新表单从中获取数据的实际对象(更新我认为的模型)而不用骰子。

我看到 angular2 存储库中有一个 dispatchEvent 方法,它允许您将输入发送到元素,但它位于 angular2/testing_internals 中,因此无法在外部项目中导入。关于如何欺骗表单使其认为它正在单元测试中接收输入的任何想法?

另一方面,当我在 google 上搜索时,ng2 单元测试的文档真的很差。有没有你知道的好网站?

【问题讨论】:

    标签: javascript unit-testing jasmine angular karma-runner


    【解决方案1】:

    设置值后,从元素中调度 input 事件。

    https://plnkr.co/edit/SyYbKLBtsTL645rSUjAS?p=preview

    尽管来自src 的文件不是公共API,但它包含一个方便的事件

    import {dispatchEvent} from 'angular2/testing_internal';
    

    它允许简单地

     dispatchEvent(password, 'input');
    

    另见

    【讨论】:

    • 你可以使用stackoverflow.com/questions/2381572/…来确保它在不同的浏览器中工作
    • 就这么简单?我没有意识到触发了更改事件来触发输入的脏乱。为此,我花了一整天的时间把头撞在墙上。所以当我使用 element.querySelector('#id') 获取元素时,我可以创建一个 onchange 事件并执行 element.querySelector('#id').dispatchEvent(event)?
    • "我不确定这是否会起作用,请参阅:github.com/angular/angular/issues/4177,我无法让它起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2017-07-10
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    相关资源
    最近更新 更多