此命令给我的单元测试带来了麻烦。问题是测试卡在等待子进程接收换行符:
var cmd = spawn('ls');
所以,我按照this thread中的建议发送换行符:
setTimeout(function() {
cmd.stdin.write('\n');
console.log('Ending terminal session');
}, 2000);
我得到了这个例外:
Error: This socket has been ended by the other party
at Socket.writeAfterFIN [as write] (net.js:275:12)
如果我从命令行运行命令,只要按下回车键,函数就会按预期返回,但是没有上述错误,它不会通过stdin发送换行符。