我有一个量角器-黄瓜框架,其步骤定义在某种程度上按照以下方式结构化:https ://github.com/cucumber/cucumber-js/blob/master/docs/support_files/step_definitions.md
我使用 areturn并将 Promise 链接在一起。最近,我遇到了一种称为async函数的不同语法。但是,当我尝试将步骤定义转换为异步时,我使用的框架中的所有帮助文件都会显示module.exports并require()显示以下警告:
[ts] 文件是一个 CommonJS 模块;它可以转换为 ES6 模块。
当我运行测试用例时,由于错误导致我无法访问这些帮助文件,我的测试用例失败。就像我的页面对象文件一样,我无法从我的测试中访问它们。我认为他们不会像以前那样被出口。
有人可以建议我如何在不破坏测试用例的情况下将测试用例更改为异步语法吗?我如何解决上述问题而不会以主要方式中断我的测试。
添加代码 这是更改前我的步骤定义中的一个步骤 let { Given, Then, When } = 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。我有另一个文件来提供名为 urls.js 的 URL,看起来像这样
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 is a CommonJS module; 它可以转换为 ES6 模块。
我试图找到解决方案,但未能成功。如果我将语法用作“async()=>{}”,则测试用例会失败,但是当我使用“async function(){}”时,其中一些步骤会通过,但其他步骤不会通过。

