我正在使用以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测试,我发现在某些情况下它们会在断言之前遇到问题。
我们应该担心这个警告吗?如果是这样,我们应如何处理在断言之前发生的承诺拒绝?
提前致谢。