mocha-suppress-logs
Version:
Suppress console output of successful mocha tests.
82 lines (58 loc) • 1.83 kB
JavaScript
;
const chai = require('chai');
const sinon = require('sinon');
const logCapture = require('../lib/log-capture');
chai.should();
describe('Log Capture', () => {
const levels = ['log', 'debug', 'info', 'warn', 'error'];
const messages = {
log: ['log', 'this is a log message'],
debug: ['debug', 'this is a debug message'],
info: ['info', 'this is an info message'],
warn: ['warn', 'this is a warning message'],
error: ['error', 'this is an error message']
};
it('should capture logs', () => {
sinon.stub(process.stdout, 'write');
sinon.stub(process.stderr, 'write');
logCapture.start();
logCapture.isCapturing().should.be.true;
for (const level of levels) {
console[level](...messages[level]);
}
process.stdout.write.called.should.be.false;
process.stderr.write.called.should.be.false;
logCapture.stop();
logCapture.isCapturing().should.be.false;
sinon.restore();
const logs = logCapture.get();
logs.length.should.be.equal(levels.length);
for (const level of levels) {
logs.should.deep.include({ level, args: messages[level] });
}
});
context('after capturing logs', () => {
beforeEach(() => {
logCapture.start();
for (const level of levels) {
console[level](...messages[level]);
}
logCapture.stop();
});
it('should print logs', () => {
for (const level of levels) {
sinon.stub(console, level);
}
logCapture.print();
for (const level in messages) {
console[level].calledWith(...messages[level]).should.be.true;
}
sinon.restore();
});
it('should reset captured logs', () => {
logCapture.reset();
const logs = logCapture.get();
logs.should.have.length(0);
});
});
});