将量角器步骤定义的语法从Promise更改为异步语法

时间:2018-06-28 00:10:15

标签: javascript asynchronous protractor cucumber

我有一个量角器-黄瓜框架,其步定义按照以下步骤进行结构化:https://github.com/cucumber/cucumber-js/blob/master/docs/support_files/step_definitions.md

我使用return并将诺言链接在一起。最近,我遇到了一种称为async函数的不同语法。但是,当我尝试将步骤定义转换为异步时,使用module.exportsrequire()的框架中的所有帮助文件都会显示以下警告:

  

[ts]文件是CommonJS模块;可以将其转换为ES6模块。

运行测试用例时,由于错误导致我无法访问这些帮助文件,因此我的测试用例失败。就像我的页面对象文件一样,我无法从测试中访问它们。我认为它们不会像以前那样被导出。

有人可以建议我如何将测试用例更改为异步语法而不破坏它们吗?如何解决上述问题,而又不会大幅度干扰我的测试。

添加代码 这是我更改之前的步骤定义中的步骤 让{给定,然后,当} = require('cucumber');

Given(/^I am on the  "([^"]*)" page$/, function (home) {
    home = this.url.FDI_HOME;
    return browser.get(home);
});

在将其更改为异步函数后,这是一个步骤定义

let { Given, Then, When } = require('cucumber');
Given(/^I am on the "([^"]*)" page$/, async function (home) {
    home = this.url.HOME
    await browser.get(home);
});

我将以类似的方式更改其他步骤。当我尝试运行上述步骤时出现问题,它无法说明它无法访问this.url.HOME。我还有另一个文件来提供URL,称为urls.js看起来像这样

let targetStore = browser.params.store || 'bestbuy';
let FDI_HOST = browser.params.fdi;

module.exports = {
    HOME Page: 'https://homepage.com',
    Shop_Page: 'https://shop.com',
    storeLink: `http://www.${targetStore}.com`,
 };

我在VS代码中的“ module.exports”一词下看到三个点,当我将其悬停在它上面时,它显示错误消息:[ts] File是CommonJS模块;可以将其转换为ES6模块。

我试图找到解决方法,但未能成功解决。如果我将语法用作“ async()=> {}”,则测试用例会失败,但是当我使用“ async function(){}”时,则通过了一些步骤,但没有通过其他步骤。

1 个答案:

答案 0 :(得分:0)

  

这些是建议/提示。它们从视觉上表明vscode可以执行可能重构/改善代码的操作,但不会被视为错误。

您可以通过将"javascript.suggestionActions.enabled": false添加到用户/工作区设置来禁用它们。

enter image description here

enter image description here

来源:https://github.com/Microsoft/vscode/issues/47299