禁用mocha.js的错误处理

时间:2014-01-31 16:35:34

标签: javascript mocha

有没有人知道是否有办法禁用Mocha的错误处理?

我真的想让异常冒出来并在调试过程中由浏览器处理。

更新: 背景是这样的。 - 某些代码抛出了意外错误。 - 我想禁用“try / catch”(类似于jasmine的测试)并以chrome的形式抛入调试器。

这样我就可以检查当时应用程序的当前状态。 听起来好像没有内置的东西,每次我在测试中出现一些奇怪的错误时我都需要手动执行此操作。也许用

包装我的代码
try {
  somethingThatBreaks();
} catch(e) {
  debugger;
}

2 个答案:

答案 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)但是如果测试失败,它很可能会破坏测试套件。