Javascript 捕获量角器2.0中的异常,生成onError函数

Javascript 捕获量角器2.0中的异常,生成onError函数,javascript,angularjs,testing,jasmine,protractor,Javascript,Angularjs,Testing,Jasmine,Protractor,我在量角器中发现了这个错误: 未捕获异常:等待量角器同步时超时 在60秒后打开页面。请看 在那之后,没有其他事情发生,这对我来说是一个问题,因为在我的conf文件中,在onComplete上,我有一个函数,它将测试结果写入JSON文件,但如果发生错误,系统将永远无法访问该函数。 另一个问题是浏览器窗口未关闭 我希望捕获该异常,或者在conf文件中模拟onError函数。我搜索了,但是没有关于onComplete或onPrepare的信息,所以也没有关于onError的信息。那是茉莉花的一部分吗

我在量角器中发现了这个错误:

未捕获异常:等待量角器同步时超时 在60秒后打开页面。请看

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

我希望捕获该异常,或者在conf文件中模拟
onError
函数。我搜索了,但是没有关于
onComplete
onPrepare
的信息,所以也没有关于
onError
的信息。那是茉莉花的一部分吗


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

由于承诺的异步性质,我不认为有这样一个顶级位置可以捕获所有异常

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

因此,在任何测试用例中,每当我在承诺上使用
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);
});
这只会使测试用例在发生意外异常时失败,并报告异常中的相关非空信息。

在节点中执行:

process.on('uncaughtException', (error) => {
  console.error('unhandled', error.stack || error);
});
这可能有助于: