Sinon spy for函数不起作用

Sinon spy for function doesn't work

本文关键字:不起作用 函数 for spy Sinon      更新时间:2023-09-26

根据sinon.js的文档,我可以这样做:var spy = sinon.spy(myFunc);,但它不起作用。这是我的努力:

var sinon = require("sinon");
describe('check bar calling', function(){
  it('should call bar once', function() {
    var barSpy = sinon.spy(bar);
    foo("aaa");
    barSpy.restore();
    sinon.assert.calledOnce(barSpy);
  });
});
function foo(arg) {
  console.log("Hello from foo " + arg);
  bar(arg);
}
function bar(arg) {
  console.log("Hellof from bar " + arg);
}

Sinon包装调用它不修补所有引用。返回值是一个包装函数,您可以对其进行断言。它记录所有对它的调用,而不是它所包装的函数。修改foo使调用者提供的函数允许注入spy,并允许在spy上进行调用。

var sinon = require("sinon");
describe('check bar calling', function(){
  it('should call bar once', function() {
    var barSpy = sinon.spy(bar);
    foo("aaa", barSpy);
    barSpy.restore();
    sinon.assert.calledOnce(barSpy);
  });
});
function foo(arg, barFn) {
  console.log("Hello from foo " + arg);
  barFn(arg);
}
function bar(arg) {
  console.log("Hellof from bar " + arg);
}