在量角器 2.0 中捕获异常,使 onError 函数



我在量角器中遇到了此错误:

未捕获的异常:等待量角器同步超时 60 秒后显示页面。请看 https://github.com/angular/protractor/blob/master/docs/faq.md

在那之后,没有发生任何其他事情,这对我来说是一个问题,因为在我的 conf 文件中,onComplete我有一个在 JSON 文件中写入测试结果的函数,但如果发生该错误,系统永远不会访问该函数。另一个问题是浏览器窗口没有关闭。

我想捕获该异常,或在conf文件中模拟onError函数。我在量角器 API 中搜索,但没有关于onCompleteonPrepare的内容,所以也没有关于onError的内容。那是茉莉花的一部分吗?

请注意,Uncaught exception不是正常错误,就像一个expect()失败或正常timeout错误一样。

我认为没有这样一个顶级地方可以捕获所有异常,因为承诺的异步性质。

相反,我建议实际将异常处理函数传递给任何已实现的承诺。

因此,在任何测试用例中,每当我在承诺上使用then(或 then 的链)时,我都会确保我也提供一个函数作为第二个参数来处理可能发生的任何异常。

例如:

function o_O(reason) {
  expect(reason.name).toBe("");
  expect(reason.message).toBe("");
  expect(reason.stack).toBe("");
}
it(' ....', function() {
  loginElt.click().then(function () {
    ...
  }, o_O);
});

这只会使测试用例在意外异常时失败,并报告异常中的相关非空信息。

在 node 中执行此操作:

process.on('uncaughtException', (error) => {
  console.error('unhandled', error.stack || error);
});