2014-11-14 98 views
0

現在我有以下代碼...更改消息進行

it("takes a long time", function(done) {}); 

問題是,當時間到我得到以下信息...

Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.

我可以將此消息更改爲更具體的內容?

回答

0

這是關於您的測試的錯誤,而不是您正在測試的代碼錯誤。如果你的測試寫得很好,你不應該遇到那個錯誤。測試本身超時。如果您正在編寫一個測試以查看某些代碼是否超時,那麼您將編寫測試來處理該測試,而不是測試只是拋出一個錯誤,因爲您沒有及時調用done()

// this function times out if passed "true" as second argument 
function testThis(done, shouldTimeout) { 
    setTimeout(function() { 
    shouldTimeout || done(); 
    }, 500); 
} 

it("timed out", function(done) { 
    var timedOut = false; 
    setTimeout(function() { 
    testThis(function() { 
     // this shouldn't be called because we're telling `testThis` to timeout 
     timedOut = true; 
    }. true); 
    }); 
    setTimeout(function() { 
    expect(timedOut).toBeFalsy(); 
    done(); 
    }, 505); 
}); 

如果你需要等待很長的時間來看看是否有超時,你可以改變茉莉等待多長時間測試通過改變jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;

茉莉花拋出一個超時錯誤,確實有a mocksetInterval前和setTimeout,它們可讓您同步運行該代碼,並保存所有浪費的時間。