如何处理DeprecationWarning:Protractor中不推荐使用未处理的承诺拒绝

时间:2017-08-22 10:33:05

标签: node.js typescript protractor

我正在使用以Typscript编写的页面对象Protractor框架,该框架应用async / await功能。我断言Jasmine。我正在测试使用Angular和Angular CLI构建的应用程序。

有一些元素在断言之前未能出现的情况,因为在我收到jasmine.DEFAULT_TIMEOUT_INTERVAL错误之前,问题不会作为断言的一部分处理,测试会挂起60秒。

我还从节点收到以下depracationWarning:

  

(节点:9796)[DEP0018]弃用警告:未处理的拒绝承诺   不推荐使用。在未来,承诺拒绝未处理   将使用非零退出代码终止Node.js进程。

正如您所期望的那样,测试会导入所需的页面对象并扩展常用操作。规格如下:

it('should allow user to update bank acocunt number',  async(done) => {
      await sideMenu.clickMenuItem(sideMenu.myDetailsOption);
      await sideMenu.clickMenuItem(sideMenu.bankDetailsOption);
      await bankDetailsPage.editAccountNumber('12345678');
      await bankDetailsPage.isDisplayed(bankDetailsPage.confirmationOfUpdateText)
      .then(isVisible => expect(isVisible).toBeTruthy())
      .then(done, done.fail);
  }, 60000);

我的第一个想法是接受承诺拒绝,所以我做了以下更改:

it('should allow user to update bank acocunt number',  async(done) => {
      await sideMenu.clickMenuItem(sideMenu.myDetailsOption).catch(done.fail);
      await sideMenu.clickMenuItem(sideMenu.bankDetailsOption).catch(done.fail);
      await bankDetailsPage.editAccountNumber('12345678').catch(done.fail);
      await bankDetailsPage.isDisplayed(bankDetailsPage.confirmationOfUpdateText)
      .then(isVisible => expect(isVisible).toBeTruthy())
      .then(done, done.fail);
      }, 60000);

然而,当处理这样的承诺拒绝时,我经历了非常不稳定的测试,间歇性地拒绝承诺,结果测试失败,说明找不到元素;但经过进一步调查,该元素存在。我现在选择不在断言之前处理承诺拒绝。

我理解测试只应该在断言上失败但通常使用e2e测试,我发现在某些情况下它们会在断言之前遇到问题。

我们应该担心这个警告吗?如果是这样,我们应如何处理在断言之前发生的承诺拒绝?

提前致谢。

0 个答案:

没有答案