1

我使用$.proxy(this, 'methodName')对象的方法作为 DOM 事件的事件处理程序。

在测试方面,我想使用 JasminespyOn来监控回调是否被触发。但是,当我开始监视该方法时,侦听器已附加到我的 Object 的构造函数中,为时已晚,并且原始的、未监视的函数已被$.proxy.

有什么好的方法来解决这个问题?我考虑过的一件事是直接监视原型的方法,但我担心这可能对每个独立于其他测试的测试产生影响。另一种方法是改变我在代码中附加监听器的方式,但这似乎是把婴儿和洗澡水一起扔了。

4

1 回答 1

0

您可以在测试开始之前窥探对象的原型。所以它不会对您的其他测试产生任何影响。

var function A {
  $.proxy(this, 'methodName');
}

a.prototype.methodName = function() {
  console.log('test');
}

describe('…', function() {
  var a;
  before(function() {
    jasmine.spyOn(a.prototype, 'methodName');
    a = new A();
  });

  it('should…', function() { 

  });

});
于 2013-06-28T07:13:36.180 回答