2012-03-12 93 views
1

我真的很新的JavaScript测试。我能够测试qunit的所有其他功能。 但无法弄清楚如何使用qunit来测试事件处理程序的功能。我在jQuery的event.js测试套件中看到一个示例触发后,尝试下面的代码函数绑定&。QUnit for javascript测试事件

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

回答

6

看来.trigger仅贯穿jQuery的约束,而不是通过另一种方式的事件。在Chrome上,这仅记录了jqueryhttp://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");​ 

您可以使用.dispatchEvent代替:http://jsfiddle.net/LYxD4/1/

var event = document.createEvent("HTMLEvents"); 
event.initEvent("click", true, true); 

$(...).get(0).dispatchEvent(event);​