如何处理DeprecationWarning:未处理的承诺拒绝在量angular器中被弃用

我正在使用Typscript编写的页面对象Protractor框架,该框架应用了asynchronous/等待function。 我坚持茉莉花。 我正在testing使用Angular和Angular CLI构build的应用程序。

有一些情况下,一个元素在断言之前没有出现,因为这个问题没有作为断言的一部分处理,所以testing挂起了60秒,直到我收到一个jasmine.DEFAULT_TIMEOUT_INTERVAL错误。

我也收到以下depracationWarning从节点:

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

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

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); 

然而,在处理承诺这样的拒绝时,我正在经历非常片面的testing,因此间歇性的承诺被拒绝,结果testing失败,说明一个元素无法find; 然而经过进一步的调查,元素出现了。 我现在select不要在断言之前处理拒绝承诺。

我知道一个testing只能在断言上失败,但通常在e2etesting中,我发现他们在某些情况下会在断言之前遇到问题。

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

提前致谢。