2015-05-29 72 views
0

這個問題has been asked before,但給出的答案是重寫在這種情況下使用的特定代碼。捕捉MochaJS超時

Mocha documentation只提到了改變超時的持續時間,而不是超時的行爲。

我的的情況下,我想測試在某些條件下沒有任何副作用的代碼。最明顯的方式做到這一點是調用代碼,等待摩卡超時,然後在我的間諜運行一些說法,如:

this.onTimeout(function() { 
    assert.equal(someObject.spiedMethod.called, false); 
}); 

someAsyncFunction(); 

這是可能的,還是我不得不求助於設置我自己的超時,如:

// 1. Disable the mocha timeout 
this.timeout(0); 

// 2. create my own timeout, which should fire before the mocha timeout 
setTimeout(function() { 
    assert.equal(someObject.spiedMethod.called, false); 
    done(); 
}, 2000); 

someAsyncFunction(); 

回答

0

摩卡自己的超時僅用來檢測測試時被認爲是慢超出了合理的。異步計算可能會導致它永遠不會終止。 Mocha不會永遠等待,而是讓你決定在X時間之後它應該通過測試。一旦超時被擊中,摩卡放棄超時的測試。

所以你必須設置你自己的超時。