process.stdout.write
與mocha
衝突打印報告的內部邏輯。
要獲得的process.stdout.write
的輸出覆蓋process.stdout.write
,緩衝輸入以及使用console.error
打印輸出(當process.stdout.write
被覆蓋console.log
將無法正常工作),例如
describe('process.stdout',() => {
let processStdoutWrite,
processStdoutWriteBuffer,
overwriteProcessStdoutWrite,
resetProcessStdoudWrite,
getProcessStdoutBuffer;
/**
* @var {function} Reference to the original process.stdout.write function.
*/
processStdoutWrite = process.stdout.write;
/**
* @returns {undefined}
*/
overwriteProcessStdoutWrite =() => {
processStdoutWriteBuffer = '';
process.stdout.write = (text) => {
processStdoutWriteBuffer += text;
};
};
/**
* @returns {string}
*/
getProcessStdoutBuffer =() => {
return processStdoutWriteBuffer;
};
/**
* @returns {undefined}
*/
resetProcessStdoudWrite =() => {
process.stdout.write = processStdoutWrite;
};
beforeEach(() => {
overwriteProcessStdoutWrite();
});
afterEach(() => {
resetProcessStdoudWrite();
});
describe('.write()',() => {
it('prints "foo"',() => {
process.stdout.write('foo');
process.stdout.write('bar');
console.error(getProcessStdoutBuffer());
});
});
});