【问题标题】:QUnit for javascript Testing on eventsQUnit for javascript 事件测试
【发布时间】:2012-03-12 15:53:59
【问题描述】:

我对 javascript 测试真的很陌生。我能够测试 qunit 的所有其他功能。 但无法弄清楚如何使用 qunit 来测试事件处理程序功能。在看到 jquery event.js 测试套件中的触发器、绑定和委托功能示例后,我尝试了以下操作。

test('Event Handling', function () {
    var hai = function() {
            console.log('Clicked');
        ok(true, 'click event triggered');
    };
    eventLib.addEvent(document.getElementById('qunit-header'), 'click', hai);
    $('#qunit-header').trigger('click');
    ok(true, 'It happend');
});

这里的 eventLib 是我编写的用于附加和分离事件的函数。但是上面的代码似乎没有在 qunit html 界面上给出任何类型的输出[除了它发生了]。但是,如果我手动单击标题,事件处理程序将记录到控制台。我正在使用 jquery v1.6.2

【问题讨论】:

    标签: javascript jquery qunit


    【解决方案1】:

    似乎.trigger 只运行通过 jQuery 绑定的事件,而不是通过其他方式。在 Chrome 上,这只会记录 jquery: http://jsfiddle.net/LYxD4/

    $("#x").get(0)
           .addEventListener("click", console.log.bind(console, "native"),
                             false);
    
    $("#x").on("click", console.log.bind(console, "jquery"));
    
    $("#x").trigger("click");​
    

    您可以改用.dispatchEventhttp://jsfiddle.net/LYxD4/1/

    var event = document.createEvent("HTMLEvents");
    event.initEvent("click", true, true);
    
    $(...).get(0).dispatchEvent(event);​
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 2011-05-27
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      • 2015-08-05
      相关资源
      最近更新 更多