124

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

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

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

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

编辑:

深表歉意!—console.log在测试期间确实有效!我一定期待它会抑制输出,而且我没有正确检查自己的代码。感谢您的回复。所以...话虽这么说...也许抑制通过测试的输出实际上会很好?唔...

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

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

4

5 回答 5

56

您正在使用哪些摩卡咖啡选项?

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

console.log(msg);

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

这是我正在使用的选项(mocha.opts):

--require should
-R spec
--ui bdd

嗯..刚刚测试没有任何 mocha.opts 并且console.log仍然有效。

于 2012-05-19T15:24:21.230 回答
35

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

于 2013-11-07T20:13:34.637 回答
24

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

于 2016-02-28T20:49:20.450 回答
0

我对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.infonode.exe

于 2020-11-25T12:23:34.643 回答
-3

使用调试库。

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

用它:

log('holi')

然后运行:

DEBUG=server npm test

就是这样!

于 2020-05-17T02:46:42.530 回答