我如何告诉 QUnit 将错误asyncTest
视为测试失败并继续下一次测试?
这是一个 QUnit 在 a 之后停止运行的示例ReferenceError
:jsfiddle
我如何告诉 QUnit 将错误asyncTest
视为测试失败并继续下一次测试?
这是一个 QUnit 在 a 之后停止运行的示例ReferenceError
:jsfiddle
如果异步测试中的错误在 QUnit 未正式运行时出现,它们会默默消失。
最简单的解决方案是将所有内容包装在一个 try/catch 块中,该块会在重新启动 QUnit后asyncTest
传播任何错误。我们实际上不必用一百万次尝试/捕获来污染代码——我们可以自动装饰您现有的方法。
例如:
// 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/
(编辑:根据评论更新。)