Mocha:隐藏成功测试的 console.log 输出

Posted

技术标签:

【中文标题】Mocha:隐藏成功测试的 console.log 输出【英文标题】:Mocha: Hide console.log output from successful tests 【发布时间】:2019-04-05 15:31:24 【问题描述】:

我的问题

我正在使用Mocha 为 Node.js 应用程序编写一个测试套件。我正在测试的函数将其日志直接写入console.log,无需任何第三方日志记录解决方案。

我不关心成功测试的日志,只关心失败测试的日志,而且由于我的函数非常冗长,因此测试输出过长。

我尝试了什么

SFTW。找到这个 (Suppress console log of successful mocha tests),但它指的是 Winston 日志。

我的问题

如何抑制 console.log 输出通过/成功的 Mocha 测试?

【问题讨论】:

【参考方案1】:

您可以修改console.log 函数以将其参数记录到变量中:

const originalLogFunction = console.log;
let output;
beforeEach(function(done) 
  output = '';
  console.log = (msg) => 
    output += msg + '\n';
  ;
);
afterEach(function() 
  console.log = originalLogFunction; // undo dummy log function
  if (this.currentTest.state === 'failed') 
    console.log(output);
  
);

如果您提供多个参数或对象,您可能需要修改虚拟日志函数。这是一个简化的例子。

【讨论】:

【参考方案2】:

Mocha Suppress Logs 非常简单。

只需安装它:

npm install --save-dev mocha-suppress-logs

并告诉 Mocha 使用:

mocha --require mocha-suppress-logs

或将其放入您的 Mocha 配置中以使其成为默认值:

      "require": "mocha-suppress-logs"

【讨论】:

以上是关于Mocha:隐藏成功测试的 console.log 输出的主要内容,如果未能解决你的问题,请参考以下文章

在Mocha中测试一个请求调用的函数

Chai + mocha,解决则测试成功,拒绝则失败

nodejs+mocha+supertest+chai进行测试(only demo)

Mocha - Chai Unit Terst 报告生成 - NodeJS

如何在 mocha 单元测试中使用猫鼬?

如何使用 Mocha 测试“正常”(非节点特定)JavaScript 函数?