4

假设我们有一个函数,它返回一个函数并为其绑定参数:

function A(x, y){
    return function(x, y){...}.bind(this, x, y);
}

现在我们想知道函数 A 是否正确绑定了参数:

var resultedFunction = A();
var spy = sinon.spy(resultedFunction);
spy();

问题 - 是否有可能知道参数是否正确绑定?我试过这个,但它是一个空数组

spy.firstCall.args
spy.getCall(0).args
4

1 回答 1

1

我终于找到了一些技巧。如果返回函数不是匿名函数,那么我们可以监视它并稍后检查参数:

var obj = {
  B: function(){
    ...
  },
  A: function(x, y){
    return this.B.bind(this, x, y);
  }
}
var x = 1, y = 2;
var spy = sinon.spy(obj, "B");
var resultedFunction = obj.A(x, y);

resultedFunction();

expect(spy.firstCall.args[0]).to.equals(x)
expect(spy.firstCall.args[0]).to.equals(y)
于 2016-05-09T20:26:20.743 回答