量角器 - 处理“then”承诺使它们更具可读性

Posted

技术标签:

【中文标题】量角器 - 处理“then”承诺使它们更具可读性【英文标题】:Protractor - handling of "then" promise to make them more readable 【发布时间】:2020-01-11 02:31:45 【问题描述】:

我正在尝试将一系列承诺变成更易读的形式。 需要帮助和想法如何优化我的测试以使其对任何测试人员都更具可读性? 这是来自我的测试规范:

    it('Should perform login', function () 
    help.click(page_element.username).then(function()  
  help.setValue(page_element.username,browser.params.login.user).then(function()      help.setValue(pageLocators.password,browser.params.login.password).then(function() 
    help.click(pageLocators.buttonLoginSubmit);
    );                                                                                              
     );
    );
    ); 

-> help 是另一个包含方法的js文件:click,setValue with return。

我还有其他类似的测试规范,它们使用了很多“then”,使代码看起来很丑。

除了去除它们之外,还有什么方法可以减少它们? 是否有可能通过 try-catch 或 promise.all 来处理这些承诺? 请告诉我该怎么做,因为我无法做到。

【问题讨论】:

用打字稿写出来,这样你就可以使用await 您还应该强烈考虑使用一致的缩进来使代码更具可读性。 @Dai 即使在 js 中我也可以使用 await。但这并不能解决问题。在测试失败时,报告也没有给我相关的失败。我正在使用茉莉花规格记者。 async/await 语法的引入几乎纯粹是为了提高 Promise 的可读性,这是您想要的结果,所以我认为下面的答案是您的问题唯一接受的答案 【参考方案1】:

您可以使用 async 和 await。

it('Should perform login', async function () 
    await help.click(page_element.username);
    await help.setValue(page_element.username,browser.params.login.user);
    await help.setValue(pageLocators.password,browser.params.login.password);
    await help.click(pageLocators.buttonLoginSubmit);
); 

【讨论】:

以上是关于量角器 - 处理“then”承诺使它们更具可读性的主要内容,如果未能解决你的问题,请参考以下文章

具有可读函数名称的扁平化承诺链

如何更改标签的背景颜色或以其他方式使它们更具可读性?

量角器 - 如何将一组承诺的结果放入另一个数组

使代码更具可读性

量角器异步/等待 UnhandledPromiseRejectionWarning:未处理的承诺拒绝

除了尝试捕获或承诺拒绝之外,有没有办法处理量角器的预期条件?