【问题标题】:Catch exception in Protractor 2.0, make onError function在 Protractor 2.0 中捕获异常,制作 onError 函数
【发布时间】:2015-04-21 16:52:44
【问题描述】:

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

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

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

我想捕捉那个异常,或者在 conf 文件中模拟 onError 函数。我搜索了Protractor API,但没有关于onCompleteonPrepare 的信息,所以也没有关于onError 的信息。那是茉莉花的一部分吗?

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

【问题讨论】:

标签: javascript angularjs testing jasmine protractor


【解决方案1】:

由于 Promise 的异步特性,我认为没有这样一个顶级位置可以捕获所有异常。

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

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

例如:

function o_O(reason) {
  expect(reason.name).toBe("");
  expect(reason.message).toBe("");
  expect(reason.stack).toBe("");
}

it(' ....', function() {
  loginElt.click().then(function () {
    ...
  }, o_O);
});

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

【讨论】:

    【解决方案2】:

    在节点中执行:

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

    【讨论】:

      猜你喜欢
      • 2020-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-28
      • 1970-01-01
      • 1970-01-01
      • 2013-09-07
      • 2011-03-25
      相关资源
      最近更新 更多