根据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);
}
答案 0 :(得分:2)
Sinon包含调用它不会修补所有引用。返回值是一个包装函数,您可以在其上进行断言。它记录所有调用它,而不是它包装的函数。修改foo以便调用者提供一个函数允许注入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);
}