使用 Mocha 测试 javascript-如何使用 console. log 调试测试?

我正在使用 javascript 测试运行程序“ Mocha”。

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

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

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

编辑:

非常抱歉!ーー console.log在测试中起作用!我一定是预料到它会抑制输出,我没有正确地检查我自己的代码。谢谢你的回应。 所以... 也就是说... 也许抑制通过测试的输出会更好? 嗯..。

另外,我想使用 console.log,因为我在让 Eclipse 调试器连接到 node.js 时遇到了很多麻烦。

只有我觉得这很棘手吗?你们如何调试 node.js?使用调试器还是使用 console.log语句?

125175 次浏览

你用的是什么摩卡咖啡?

也许这与记者(- R)或 ui (- ui)的使用有关?

console.log(msg);

在我的测试运行期间工作良好,虽然有时混合在一点愚蠢。可能是由于测试运行的异步特性。

下面是我使用的选项(mocha.opts) :

--require should
-R spec
--ui bdd

嗯. . 刚刚测试没有任何 mocha.opts 和 console.log仍然工作。

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

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

使用 调试库。

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

使用它:

log('holi')

然后跑:

DEBUG=server npm test

就是这样!

我有一个问题与 node.exe程序,如测试输出与 mocha

在我的例子中,我通过删除一些默认的“ node.exe”别名来解决这个问题。

我使用的是 用于 Windows 的 Git Bash(2.29.2) ,一些默认别名是从 /etc/profile.d/aliases.sh设置的,

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

要删除别名,请更新 aliases.sh或直接执行

unalias node

我不知道为什么 winptyconsole.info缓冲输出有这样的副作用,但是如果直接使用 node.exe,就不会再有标准输出的问题了。