Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用带有动态函数绑定的测试间谍的好方法_Javascript_Unit Testing_Jasmine_Spy_Function Binding - Fatal编程技术网

Javascript 使用带有动态函数绑定的测试间谍的好方法

Javascript 使用带有动态函数绑定的测试间谍的好方法,javascript,unit-testing,jasmine,spy,function-binding,Javascript,Unit Testing,Jasmine,Spy,Function Binding,我正在使用$.proxy(这是“methodName”)将对象的方法用作DOM事件的事件处理程序 当涉及到测试时,我想使用Jasmine的spyOn来监控回调是否被触发。但是,当我开始监视该方法时,侦听器已附加到对象的构造函数中,为时已晚,而且原始的未使用函数已被$.proxy使用 解决这个问题的好方法是什么?我考虑过的一件事是直接监视原型的方法,但我担心这可能会对独立于其他测试的每个测试产生影响。另一个方法是改变我在代码中附加监听器的方式,但这看起来像是把婴儿连同洗澡水一起扔掉。你可以在测试开

我正在使用
$.proxy(这是“methodName”)
将对象的方法用作DOM事件的事件处理程序

当涉及到测试时,我想使用Jasmine的
spyOn
来监控回调是否被触发。但是,当我开始监视该方法时,侦听器已附加到对象的构造函数中,为时已晚,而且原始的未使用函数已被
$.proxy
使用


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

你可以在测试开始之前监视对象的原型。因此,它不会对您的其他测试产生任何影响

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() { 

  });

});