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");    

});

  

 

你可能感兴趣的:(it)