如何在Javascript中测试另一个函数的函数调用次数?

dev*_*qon 2 javascript unit-testing qunit sinon

说我有这个功能:

function doSomething(n) {
    for (var i = 0; i < n; i++) {
        doSomethingElse();
    }
}
Run Code Online (Sandbox Code Playgroud)

如何测试该doSomethingElse函数是否被调用n次?

我尝试过类似的东西:

test("Testing something", function () {
    var spy = sinon.spy(doSomethingElse);

    doSomething(12);

    equal(spy.callCount, 12, "doSomethingElse is called 12 times");
});
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用,因为你必须在doSomething()调用原始时调用间谍doSomethingElse().如何使用QUnit/sinon.js完成这项工作?

编辑

也许这甚至不是一个好主意?这是否属于'单元测试',因为调用了另一个函数?

psq*_*red 5

你可以这样做:

test('example1', function () {
    var originalDoSomethingElse = doSomethingElse;
    doSomethingElse = sinon.spy(doSomethingElse);
    doSomething(12);
    strictEqual(doSomethingElse.callCount, 12);
    doSomethingElse = originalDoSomethingElse;
});
Run Code Online (Sandbox Code Playgroud)

例如:JSFiddle.