如何告訴QUnit在asyncTest
期間將錯誤視爲測試失敗並繼續進行下一個測試?QUYNit asyncTest在錯誤後不會繼續
這裏是QUnit停止一個ReferenceError
後運行一個例子:jsfiddle
如何告訴QUnit在asyncTest
期間將錯誤視爲測試失敗並繼續進行下一個測試?QUYNit asyncTest在錯誤後不會繼續
這裏是QUnit停止一個ReferenceError
後運行一個例子:jsfiddle
錯誤異步測試中默默死去,如果出現而QUnit沒有正式運行他們。
最簡單的解決方案是將每個asyncTest
內容封裝在try/catch塊中,該塊在傳播任何錯誤之後重新啓動QUnit。實際上,我們實際上不得不污染具有一百萬次嘗試/捕獲的代碼 - 我們可以自動裝飾您現有的方法。
例如:
// surrounds any function with a try/catch block to propagate errors to QUnit when
// called during an asyncTest
function asyncTrier(method) {
return function() {
try{
// if the method runs normally, great!
method();
} catch (e) {
// if not, restart QUnit and pass the error on
QUnit.start();
throw new (e);
}
};
}
QUnit.asyncTest("sample", 1, function() {
setTimeout(asyncTrier(function(){
var foo = window.nonexistentobj.toString() + ""; // throws error
QUnit.ok("foo defined", !!foo)
QUnit.start();
}), 1000);
});
分叉的小提琴,與樣品包裝方法自動應用這樣一個try/catch周圍的每一個異步塊:http://jsfiddle.net/bnMWd/4/
(編輯:每評論更新。 )
我可以使用'testTimeouts',但它有風險,因爲測試可能需要很多時間,並且如果您有一些錯誤測試,它將花費很多時間來運行所有測試! – Bakhshi