20-解决方案
18.5.2 解决方案
可以用jQuery的 trigger()
方法触发事件并测试预期行为的发生。如果你不希望触发浏览器原生事件,可以使用 triggerHandler()
执行绑定的事件处理程序。这在测试链接上的单击事件时有用,因为 trigger()
会导致浏览器打开另一个位置,这是测试中不希望出现的。
假定要测试一个简单的击键记录程序:
var keylogger = {
log: null,
init: function() {
keylogger.log = [];
$(document).unbind("keydown").keydown(function(event) {
keylogger.log.push(event.keyCode);
});
}
};
可以人工触发按键事件,查看记录程序是否正常工作:
test("basic keylogger behavior", function() {
// 初始化
keylogger.init();
//触发事件
var event = $.Event("keydown");
event.keyCode = 9;
$(document).trigger(event);
// 验证预期行为
same(keylogger.log.length, 1, "a key was logged");
same(keylogger.log[0], 9, "correct key was logged");
});