我使用 $.proxy(this, 'methodName')
将对象的方法用作 DOM 事件的事件处理程序。
在测试时,我想使用 Jasmine 的 spyOn
来监视回调是否被触发。然而,当我开始监视该方法时,监听器已附加在我的对象的构造函数中,但为时已晚,并且 $.proxy
已经使用了原始的、未监视的函数。
解决这个问题的好方法是什么?我考虑过的一件事是直接监视原型(prototype)的方法,但我担心这可能会对每个独立于其他测试的测试产生影响。另一种方法是更改我在代码中附加监听器的方式,但这看起来就像把洗澡水和婴儿一起倒掉。
最佳答案
您可以在测试开始之前监视对象的原型(prototype)。所以它不会对您的其他测试产生任何影响。
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() {
});
});
关于javascript - 使用具有动态函数绑定(bind)的测试 spy 的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17348362/