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完成这项工作?
编辑
也许这甚至不是一个好主意?这是否属于'单元测试',因为调用了另一个函数?
你可以这样做:
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.