node.js - 运行单元测试时禁用winston日志记录?

标签 node.js unit-testing winston

在执行 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/

相关文章:

Node.js:如何在不重新启动服务器的情况下更改日志级别?

javascript - Node : Find mailto: section with cheerio

python - 测试 Django : reason for unexpected http status code

ruby-on-rails - RSpec 失败(未定义方法 `id' 为 nil :NilClass ) with has_many through model

Node.js - 变量范围和垃圾收集

javascript - 如何使用正确的缩进打印 error.stack,而不使用换行符

JavaScript 将 JSON 数据提取到新对象中

node.js - 使用 docker-compose 设置带有 redis 的 Node

node.js - Windows 上 "Cannot find module"上的 node-gyp 错误

unit-testing - 如何访问自定义扩展规范中的 sinatra 设置?