【发布时间】:2018-06-28 00:10:14
【问题描述】:
我有一个量角器-黄瓜框架,它的步骤定义在某种程度上是这样组织的:https://github.com/cucumber/cucumber-js/blob/master/docs/support_files/step_definitions.md
我使用return 并将承诺链接在一起。最近,我遇到了一种称为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(){}”时,其中一些步骤通过但其他步骤不通过。
【问题讨论】:
-
advice me as to how I can change my test cases to async syntax without breaking them你想要关于如何更改代码的建议......但你没有显示一行代码......有趣 -
@JaromandaX 我已经添加了代码。如果您需要更多示例,请告诉我
-
@fuzz:我没有否决你的回答。我没有足够的声誉来否决/投反对票。
标签: javascript asynchronous protractor cucumber