我正在尝试编写一些 CucumberJS 功能,它将测试我正在创建的 NodeJS 命令行应用程序,但是我遇到了能够child_process
在功能步骤中执行的问题。
只是为了获得概念验证工作,我正在尝试执行ls -l
命令。
我拥有的代码是;
var ChildProcess = require('child_process');
function execCmd() {
console.log('Testing command...');
var bin = ChildProcess.exec('ls -l', { timeout: 5 }, function(error, stdout, stderr) {
console.log('executing...');
console.log(error);
console.log(stdout);
console.log(stderr);
});
bin.on('exit', function(code) {
console.log('Code: ' + code);
});
}
module.exports = function() {
this.Given(/^I am on the command line$/, function(callback) {
execCmd();
callback();
});
}
Executingcucumber-js
不会从已执行的命令中输出任何内容。输出如下;
Testing command...
.
1 scenario (1 passed)
1 step (1 passed)
但是,如果我只是execCmd()
在函数定义之后调用,删除module.exports
块并运行,node cli.js
我会正确看到输出(即文件列表)。
我已经看到如何使用 nodejs child_process exec 访问 cucumber.js 步骤定义中的 stdout、stderr 和错误,它没有回答问题,只是说明了如何执行命令,而没有特定于在 CucumberJS 步骤中运行它的内容。
谢谢!