说我有这个功能:
function doSomething(n) {
for (var i = 0; i < n; i++) {
doSomethingElse();
}
}
我如何测试
doSomethingElse
函数是否被调用了n次?我尝试了类似的东西:
test("Testing something", function () {
var spy = sinon.spy(doSomethingElse);
doSomething(12);
equal(spy.callCount, 12, "doSomethingElse is called 12 times");
});
但这似乎不起作用,因为您必须在
doSomething()
调用原始doSomethingElse()
时调用 spy 。如何使用QUnit / sinon.js使其工作?编辑
也许这不是一个好主意?因为调用了另一个函数,这是否属于“单元测试”范围之外?
最佳答案
您可以执行以下操作:
test('example1', function () {
var originalDoSomethingElse = doSomethingElse;
doSomethingElse = sinon.spy(doSomethingElse);
doSomething(12);
strictEqual(doSomethingElse.callCount, 12);
doSomethingElse = originalDoSomethingElse;
});
例如:JSFiddle。