Этот тест
it.only('should not throw', () => {
var output = '';
function callback(data) {
output += data.toString();
}
process.stdout.on('data', callback); // error is thrown at this line
// ...
process.stdout.removeListener('data', callback);
})
выдает ошибку:
Error: This socket is closed
at WriteStream.Socket._writeGeneric (net.js:679:19)
at WriteStream.Socket._write (net.js:730:8)
at doWrite (_stream_writable.js:331:12)
at writeOrBuffer (_stream_writable.js:317:5)
at WriteStream.Writable.write (_stream_writable.js:243:11)
at WriteStream.Socket.write (net.js:657:40)
at Console.log (console.js:43:16)
at Runner.<anonymous> (node_modules\mocha\lib\reporters\spec.js:80:13)
at emitTwo (events.js:111:20)
at Runner.emit (events.js:191:7)
at Runner.fail (node_modules\mocha\lib\runner.js:251:8)
at Runner.uncaught (node_modules\mocha\lib\runner.js:757:8)
at process.uncaught (node_modules\mocha\lib\runner.js:839:10)
at emitOne (events.js:96:13)
at process.emit (events.js:188:7)
at process._fatalException (bootstrap_node.js:297:26)
Где node_modules\mocha\lib\reporters\spec.js:80:13
- это линии Mocha:
runner.on('fail', function(test) {
console.log(indent() + color('fail', ' %d) %s'), ++n, test.title);
});
Он должен проверить код, который выводит на process.stdout
с помощью spawn
, но я не смог добраться до этой части; ошибка мгновенно process.stdout.on('data',...)
вызове process.stdout.on('data',...)
.
Проблема сохраняется с последней версией Mocha (5.2.0) и по умолчанию, используемый репортер не влияет на результат.
Что происходит и как process.stdout
может быть прослушан? Если это невозможно, то каким образом stdout из порожденного процесса будет протестирован в Mocha в противном случае?