有没有人知道是否有办法禁用Mocha的错误处理?
我真的想让异常冒出来并在调试过程中由浏览器处理。
更新: 背景是这样的。 - 某些代码抛出了意外错误。 - 我想禁用“try / catch”(类似于jasmine的测试)并以chrome的形式抛入调试器。
这样我就可以检查当时应用程序的当前状态。 听起来好像没有内置的东西,每次我在测试中出现一些奇怪的错误时我都需要手动执行此操作。也许用
包装我的代码try {
somethingThatBreaks();
} catch(e) {
debugger;
}
答案 0 :(得分:2)
Mocha安装自己的onerror
处理程序来捕获异步代码中可能发生的异常。您可以使用以下命令禁用它:
window.onerror = undefined;
危险。只有在绝对必须这样做时才应该这样做。如果你把它作为例程,Mocha将完全错过异步代码中发生的错误。
如果您想要做的是让同步代码中的异常冒出来,我就不会看到它会实现什么。如果你想在Mocha触摸它之前检查异常,那么包裹你的测试的try...catch
块将会这样做。
答案 1 :(得分:0)
Mocha的错误处理包含在以下code中:
if (this.async) {
try {
this.fn.call(ctx, function(err){
if (err instanceof Error || toString.call(err) === "[object Error]") return done(err);
if (null != err) return done(new Error('done() invoked with non-Error: ' + err));
done();
});
} catch (err) {
done(err);
}
return;
}
// sync
try {
if (!this.pending) this.fn.call(ctx);
this.duration = new Date - start;
fn();
} catch (err) {
fn(err);
}
您可能会使用catch捕获错误(或完全删除try..catch
)但是如果测试失败,它很可能会破坏测试套件。