使用 Mocha 测试 JavaScript - 如何使用 console.log 来调试测试

Testing javascript with Mocha - how can I use console.log to debug a test?

本文关键字:测试 console log 何使用 调试 Mocha JavaScript 使用      更新时间:2023-09-26

我正在使用javascript测试运行器"Mocha"。

我有一个失败的测试,所以我会使用 console.log 调试它。

但是当测试运行时,没有输出(只有来自 Mocha 的测试结果(。看来摩卡已经捕获并压制了我的console.log输出!

如何让摩卡显示我的输出?(对于失败的测试(?

编辑:

非常抱歉!— console.log在测试期间确实有效! 我一定期望它会抑制输出,并且我没有正确检查自己的代码。 感谢您的回复。所以。。。话虽如此...也许抑制通过的测试的输出实际上会很好?嗯。。。

在相关说明中:我想使用console.log,因为我在尝试让 Eclipse 调试器连接到 node.js 时遇到了很多麻烦。

我是唯一一个觉得这很棘手的人吗? 你们如何调试节点.js? 使用调试器,还是使用console.log语句?

您使用哪些摩卡选项?

也许这与使用的报告器(-R(或ui(-ui(有关?

console.log(msg);

在我的测试运行期间工作正常,尽管有时会混入有点愚蠢。 大概是由于测试运行的异步性质。

以下是我正在使用的选项(mocha.opts(:

--require should
-R spec
--ui bdd

嗯。。刚刚在没有任何 mocha.opts 的情况下进行了测试,console.log仍然有效。

如果要测试异步代码,则需要确保将done()放在该异步代码的回调中。我在测试对 REST API 的 http 请求时遇到了这个问题。

您可能还console.log放在失败且未捕获的期望之后,因此您的日志行永远不会被执行。

我对node.exe程序(例如带有mocha的测试输出(有问题。

就我而言,我通过删除一些默认的"node.exe"别名来解决它。

我正在使用适用于Windows(2.29.2(的Git Bash,并且从/etc/profile.d/aliases.sh设置了一些默认别名,

  # show me alias related to 'node'
  $ alias|grep node
  alias node='winpty node.exe'`

要删除别名,请更新aliases.sh或干脆执行

unalias node

我不知道为什么winpty对缓冲输出有这种副作用console.info但是通过直接node.exe使用,我没有更多的标准输出问题。

使用调试库。

import debug from 'debug'
const log = debug('server');

使用它:

log('holi')

然后运行:

DEBUG=server npm test

就是这样!