QUnit使用笔记-3测试用户操作

模拟操作:

  • elem.trigger(event);
  • elem.triggerHandler(event);
    • triggerHandler的不同:
      • 不会引起事件的默认行为
      • .trigger() 会操作 jQuery 对象匹配的所有元素,而 .triggerHandler() 只影响第一个匹配元素。
      • 由 .triggerHandler() 创建的事件不会在 DOM 树中冒泡。
      • 该方法的返回的是事件处理函数的返回值,而不是 jQuery 对象。
  • $.Event(event); 如果事件需要依赖特定的操作其他操作,则要使用Event,并设置属性:
    event = $.Event("keydown");  //keydown event;
event.keyCode = 9;
$doc.trigger(event);//can use triggerHandler() insteadof trigger;

  例子:

function keyLogger(target) {
if(!(this instanceof keyLogger)) {
return new keyLogger(target);
};
this.target = target;
this.log = [];
var self = this;
this.target.off("keydown").on("keydown", function(event) {
self.log.push(event.keyCode);
});
} QUnit.test("keylogger api behavior", function(assert) {
var event,
$doc = $(document),
keys = keyLogger($doc); //trigger event
event = $.Event("keydown"); //keydown event;
event.keyCode = 9;
$doc.trigger(event);//can use triggerHandler() insteadof trigger; //verify expected behavior
assert.equal(keys.log.length,1,"a key was logged");
assert.equal(keys.log[0],9,"correct key was logged");
});

  

上一篇:不二之选_iTOP-4418开发板研发之旅_缩短开发时间


下一篇:sql 跨域