在执行 Node 模块的单元测试时,是否可以选择性地禁用 Winston 日志记录?
理想情况下,我希望在应用程序运行时进行日志记录以提供信息和调试目的,但在运行测试时被抑制以免弄乱演示单元测试结果。
我对 winston 的使用在我的模块内部,如下所示:
// MyModule.js
var logger = require('winston');
module.exports = function() {
// does some stuff
// and logs some stuff like so:
logger.log('an informational message');
}
// MyModuleTest.js
describe('MyModule', fucntion() {
it('should do some stuff', function() {
var myModuleUnderTest = require('MyModule');
// some tests
}
}
最佳答案
Winston 传输有一个您可以设置的 silent
属性,这可能比删除整个传输要好一些。
我为传输添加了一个名称,这样会更容易一些:
var logger = new winston.Logger();
logger.add(winston.transports.Console, {
name: 'console.info',
colorize: true,
showLevel: true,
formatter: consoleFormatter,
})
然后在测试或设置中,我可以有选择地打开和关闭登录:
logger.transports['console.info'].silent = true // turns off
logger.transports['console.info'].silent = false // logging back on
关于node.js - 运行单元测试时禁用winston日志记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38363292/