在Node中测试绑定函数

时间:2015-07-13 16:15:47

标签: javascript node.js

在我的模块的create方法中,我将一个函数绑定到一个变量。

var __ = function() {};

__.create = function() {
  var instance = new __();

  instance.bound = instance.functionToBindTo.bind(instance, 'boundParameter');

  return instance;
}

__.prototype.functionToBindTo = function(paramater1, parameter2) {
  //do stuff
} 

我现在希望能够测试调用' bound',将设置' boundParameter'作为参数1。

通常我会做类似的事情......

'ensure parameter1 passed as first parameter' : function(test) {
  var newInstance = ClassToTest.create();

  newInstance.functionToBindTo = function(parameter1) {
    test.equal(parameter1, 'boundParameter');
  };

  newInstance.bound();

  test.done();
}

但是,由于.bind()实际上创建了一个新函数,因此我无法在测试中覆盖它。我知道可以选择滚动我自己的bind2方法并修补它,但我希望有办法避免这种情况。

有什么想法吗?

谢谢,

马特

1 个答案:

答案 0 :(得分:0)

这可能不是正确的方法,但对于上面的测试用例,您可以覆盖functionToBindTo原型对象中的ClassToTest

'ensure parameter1 passed as first parameter' : function(test) {

  ClassToTest.prototype.functionToBindTo = function(parameter1) {
    test.equal(parameter1, 'boundParameter');
  };

  var newInstance = ClassToTest.create();

  newInstance.bound();

  test.done();
}