Sinon:窥探jquery函数调用

时间:2015-03-11 22:11:32

标签: jquery jasmine sinon

如何检查

$("#myElement").change();

被调用?

我已经尝试了

spy = sinon.spy($("#myElement"), "change");

然后

expect(spy).toHaveBeenCalled();

1 个答案:

答案 0 :(得分:0)

您可以通过保持对它的引用来“覆盖”jquery的更改功能,然后用您自己的函数替换原始引用。新函数完成后,确保通过function.apply()调用正确的上下文(即 this )来调用原始函数,如下所示:

var oldChange = $.fn.change; 
$.fn.change = function(args) { 
  console.log("change triggered", args); 
  oldChange.apply(this,args); };
}

不确定这是否是最佳做法。还有其他人在乎这个吗?