這是關於您的測試的錯誤,而不是您正在測試的代碼錯誤。如果你的測試寫得很好,你不應該遇到那個錯誤。測試本身超時。如果您正在編寫一個測試以查看某些代碼是否超時,那麼您將編寫測試來處理該測試,而不是測試只是拋出一個錯誤,因爲您沒有及時調用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 mock爲setInterval
前和setTimeout
,它們可讓您同步運行該代碼,並保存所有浪費的時間。
來源
2015-01-07 22:18:12
m59