Javascript 将量角器步骤定义的语法从承诺更改为异步语法
我有一个量角器框架,其步骤定义的结构如下: 我使用Javascript 将量角器步骤定义的语法从承诺更改为异步语法,javascript,asynchronous,protractor,cucumber,Javascript,Asynchronous,Protractor,Cucumber,我有一个量角器框架,其步骤定义的结构如下: 我使用返回并将承诺链接在一起。最近,我遇到了一种不同的语法,称为async函数。但是,当我尝试将步骤定义转换为async时,我使用的框架中的所有帮助文件都会显示以下警告:saymodule.exports和require() [ts]文件是一个CommonJS模块;它可以转换为ES6模块 当我运行测试用例时,由于错误而无法访问这些帮助文件,我的测试用例失败。就像我的页面对象文件一样,我无法从测试中访问它们。我想它们不像以前那样被出口了 有人能告诉我如何
返回
并将承诺链接在一起。最近,我遇到了一种不同的语法,称为async
函数。但是,当我尝试将步骤定义转换为async时,我使用的框架中的所有帮助文件都会显示以下警告:saymodule.exports
和require()
[ts]文件是一个CommonJS模块;它可以转换为ES6模块
当我运行测试用例时,由于错误而无法访问这些帮助文件,我的测试用例失败。就像我的页面对象文件一样,我无法从测试中访问它们。我想它们不像以前那样被出口了
有人能告诉我如何在不破坏测试用例的情况下将测试用例更改为异步语法吗?我如何解决上述问题而不以主要方式中断测试
添加代码
以下是更改前我的步骤定义中的一个步骤
当}=require('cumber')时,设{Given
这是一个步骤定义,在我将其更改为异步函数之后
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,名为URL.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]文件是一个CommonJS模块;它可以转换为ES6模块
我试图找到解决这个问题的办法,但没有成功。如果我使用的语法是“async()=>{}”,测试用例会失败,但当我使用“async function(){}”时,会通过一些步骤,但不会通过另一个步骤
这些是建议/提示。它们直观地表明vscode可以执行可能重构/改进代码的操作,但它们不会被视为错误
您可以通过将“javascript.suggestionActions.enabled”:false
添加到您的用户/工作区设置中来禁用它们
来源:建议我如何将测试用例更改为异步语法而不破坏它们
您需要关于如何更改代码的建议。。。但是你没有显示一行代码。。。interesting@JaromandaX我添加了代码。如果你想要更多,请告诉我examples@fuzz当前位置我没有否决你的答案。我没有足够的声誉来否决/否决一个答案。谢谢你提供的信息。但是,即使禁用它,我也无法访问用javascript ES5编写的文件。所有module.exports和requires()都向我显示errors@Monnie_tester什么是您的tsconfig.json
编译器选项{…}
?嗨,我的项目中没有tsconfig.json。这是一个javascript项目。我用javascript设置了protrcator cucumber
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`,
};