【问题标题】:Jquery trigger() doesnt work in angular scenario test runner in end2end testJquery trigger() 在 end2end 测试中的角度场景测试运行器中不起作用
【发布时间】:2013-01-04 18:47:35
【问题描述】:

我知道在角度“控制器”中绑定到 jquery 事件不符合这个框架理念,但它允许我将 asp.net mvc 项目中的视图逐步迁移到角度。这适用于运行时,但我无法测试它。如果我在“控制器”中的输入字段上绑定了 jquery 事件“keydown”,并且我尝试在我的测试场景中触发()这个事件(我正在使用 angular-scenario.js),那么这个事件根本不会在“控制器”中收到。我不能使用 input().enter() 因为这个输入不是模型的一部分(正如我在开始时所说的......)。问题:是否可以从场景中触发事件?如果不是,我应该使用不同的测试运行器吗?

【问题讨论】:

    标签: jquery angularjs jasmine


    【解决方案1】:

    上面的链接指向一个有角度的UT而不是e2e的情况,你可以通过它的查询api在e2e中触发一个dom事件,例如

        element('#something_id').query(function(el, done){
            var evt = document.createEvent('Event');
            evt.initEvent('focus', false, true);
            el[0].dispatchEvent(evt);
            done();
        });
    

    【讨论】:

    • 这确实有助于解决我在 e2e 测试中遇到的问题。专门从动态创建的输入字段中检索值 - 这是测试此场景的唯一方法似乎很奇怪plnkr.co/edit/ahuT3hL92az0aQBHxRVl
    【解决方案2】:

    您可以查看 AngularJS 测试。他们使用browserTrigger(element, 'keydown'); 来触发元素上的 DOM 事件。

    这里是example from AngularJS source

    【讨论】:

      猜你喜欢
      • 2021-03-24
      • 1970-01-01
      • 1970-01-01
      • 2021-08-23
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多