Я пытаюсь написать некоторые функции 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();
});
}
Выполнение cucumber-js
ничего не выводит из выполненной команды. Результат выглядит следующим образом:
Testing command...
.
1 scenario (1 passed)
1 step (1 passed)
Но если я просто вызываю execCmd()
после определения функции, удаляя блок module.exports
и запускаю node cli.js
, я вижу результат (то есть список файлов) правильно.
Я видел как для доступа к stdout, stderr и ошибке в определении шага cucumber.js с помощью nodejs child_process exec, который не отвечает на вопрос и просто указывает, как выполнить команду, и ничего конкретного для ее выполнения на шаге CucumberJS.
Спасибо!