在Protractor 2.0中捕获异常,make onError函数

时间:2015-04-21 16:52:45

标签: javascript angularjs testing jasmine protractor

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

  

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

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

我想捕获该异常,或在conf文件中模拟onError函数。我在Protractor API中进行了搜索,但onCompleteonPrepare没有任何内容,因此onError也没有任何内容。那是Jasmine的一部分吗?

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

2 个答案:

答案 0 :(得分:0)

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

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

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

例如:

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

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

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

答案 1 :(得分:0)

在节点中完成:

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