setTimeout测试未按预期运行

时间:2012-11-08 22:08:36

标签: javascript unit-testing settimeout jasmine

我是Jasmine的新手,我对以下测试有疑问:

describe("my test suite", function() {
    it("my testcase", function() {
        var callbackWasCalled = false;
        function callback(){
            callbackWasCalled = true;
        }
        methodToTest(callback);
        expect(callbackWasCalled).toBe(true);
    });
});

在大多数情况下可行,但此代码不起作用:

methodToTest(callback) {
    setTimeout(function() { callback(); }, 100);
}

为什么? 当我在回调中添加console.log时,我看到它被调用。

1 个答案:

答案 0 :(得分:0)

原因是在调用回调之前测试已经完成。尝试使用jasmine.Clock来模拟settimeout方法。