Capture Console
This is a utility, mostly used for testing, to capture string data written to both the stdout and stderr streams in
Node.js applications.
NOTE: This project is forked from Randy Carver's capture-stdout.
Many thanks to him and the others who helped that make that project exist. I forked it because I had more specialized
needs, but might one day want to merge the fork back in.
Installation
npm install @aoberoi/capture-console
Usage
const { CaptureConsole } = require('@aoberoi/capture-console');
function withMinOfFive(x) {
if (x < 5) {
console.warn('rounding up to 5');
return 5;
} else {
console.log('already more than 5');
return x;
}
}
it('should log when the value is already greater than 5', function() {
const captureConsole = new CaptureConsole();
captureConsole.startCapture();
const result = withMinOfFive(10);
captureStdout.stopCapture();
const output = captureStdout.getCapturedText();
assert.equal(result, 10);
assert.equal(output.length, 1);
});
it('should warn when the value is less than 5', function() {
const captureConsole = new CaptureConsole();
captureConsole.startCapture();
const result = withMinOfFive(3);
captureStdout.stopCapture();
const output = captureStdout.getCapturedText();
assert.equal(result, 5);
assert.equal(output.length, 1);
});
Methods
startCapture()
Starts capturing the writes to process.stdout
and process.stderr
.
stopCapture()
Stops capturing the writes to process.stdout
and process.stderr
.
clearCaptureText()
Clears all of the captured text.
getCapturedText() → {Array} of String
Returns all of the captured text.
Changes since Capture Stdout
- In addition to capturing stdout, also captures stderr
- Exports a namespace instead of a value (better interop with ESM imports)
- Made the README more generic
- Stated support back to currently active LTS (v6)
- Removes
pino
from tests