javascript - 在 Protractor 2.0 中捕获异常,创建 onError 函数

标签 javascript angularjs testing jasmine protractor

我在 Protractor 中遇到这个错误:

Uncaught exception: Timed out waiting for Protractor to synchronize with the page after 60 seconds. Please see https://github.com/angular/protractor/blob/master/docs/faq.md

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

我想捕获那个异常,或者模拟 onError conf文件中的函数。我搜索了 Protractor API但是关于 onComplete 什么都没有或 onPrepare所以也没有关于onError .那是 Jasmine 的一部分吗?

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

最佳答案

由于 promise 的异步性质,我认为不存在可以捕获所有异常的单一顶级位置。

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

因此,在任何测试用例中,每当我在 promise 中使用 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);
});

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

关于javascript - 在 Protractor 2.0 中捕获异常,创建 onError 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29778541/

相关文章:

javascript - 使用 Ionic 和 Webpack 导入 ngstorage 时无法解析模块 'angular'

javascript - ng-href ="#/myanchor"不再像往常一样使用 angularjs 1.6.1

testing - 为什么可用性评估方法很少被采用?

ruby - 基本的 ruby 测试问题

javascript - 错误: [$injector:unpr] Unknown provider: $localStorageProvider <- $localStorage <- login

javascript - 具有不同名称的一组复选框的 jQuery 验证方法

javascript - Apple 如何根据是否启用 Javascript 来更改站点?

javascript - 如何在输入类型中使用变量

Android- 在实际硬件上工作的工具

javascript - 检查按钮点击事件并做一些事情,如果用户点击其他地方则删除它们