我在CucumberJS和硒节点中获得了自动化框架。但它有一个较旧版本的黄瓜,它依赖于承诺。为了利用最新的同步步骤功能,我决定升级cucumberJS版本(1.3.3到4.2.1) 现在问题是用于在index.js中以编程方式调用黄瓜cli的代码不再工作。我在步骤定义和world.js中做了所有其他更改,但是我无法弄清楚如何通过节点运行这个东西,比如
node index.js --tags @SampleFeature
以前使用的是旧版本,但现在不再使用了。
之前正在运作的代码 -
// execute cucumber
let cucumberCli = Cucumber.Cli(process.argv);
cucumberCli.run(succeeded => {
var code = succeeded ? 0 : 1;
function exitNow() {
process.exit(code);
}
if (process.stdout.write('')) {
exitNow();
} else {
process.stdout.on('drain', exitNow);
}
});
现在它在版本更新后抛出这样的错误
/Users/../node_modules/babel-runtime/helpers/classCallCheck.js:7
throw new TypeError("Cannot call a class as a function");
^
TypeError: Cannot call a class as a function
at exports.default (/Users/../node_modules/babel-runtime/helpers/classCallCheck.js:7:11)
at Object.Cli (/Users/../node_modules/cucumber/lib/cli/index.js:78:34)
at Object.<anonymous> (/Users/../index.js:90:10)
at Module._compile (internal/modules/cjs/loader.js:678:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:689:10)
at Module.load (internal/modules/cjs/loader.js:589:32)
at tryModuleLoad (internal/modules/cjs/loader.js:528:12)
at Function.Module._load (internal/modules/cjs/loader.js:520:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:719:10)
at startup (internal/bootstrap/node.js:228:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:576:3)
我google了很多但没找到替代方案。尝试将Cli
作为具有new
关键字的类调用多个内容时,无法正常工作。尝试将其移除并通过普通黄瓜cli跑步者运行,但没有效果。
PS。我来自一个有Java背景的Cucumber,事情更简单:)
答案 0 :(得分:1)
您需要创建一个新的CLI对象,然后使用它的.run
方法:
let runArgs = ['The cucumber args array here'];
let cliArgs = {argv : runArgs, cwd: process.cwd(), stdout: process.stdout};
let cli = (new require('cucumber').Cli)(cliArgs);
cli.run(); //Returns a promise