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

时间:2012-05-19 15:07:52

标签: javascript node.js mocha

我正在使用javascript test-runner“Mocha”。

我有一个失败的测试,所以我想使用console.log进行调试。

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

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

修改

巨大的道歉! - console.log在测试期间有效!我一定期待它抑制输出,我没有正确检查自己的代码。谢谢你的回复。 所以...说的......也许真的很好地抑制通过测试的输出?嗯...

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

我是唯一一个发现这个棘手的人吗?你们怎么调试node.js?使用调试器或console.log语句?

5 个答案:

答案 0 :(得分:46)

您使用的是哪些Mocha选项?

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

console.log(msg);

在我的测试运行期间工作正常,但有时混合在一点傻。大概是由于测试运行的异步性质。

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

--require should
-R spec
--ui bdd

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

答案 1 :(得分:31)

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

答案 2 :(得分:18)

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

答案 3 :(得分:0)

我遇到了node.exe程序的问题,例如mocha的测试输出。

对于我来说,我通过删除一些默认的“ node.exe”别名来解决了该问题。

我正在使用Git Bash for Windows(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

我不知道为什么winpty会对console.info缓冲输出产生这种副作用,但是直接使用node.exe,我不再遇到标准输出问题。

答案 4 :(得分:-1)

使用debug库。

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

使用它:

log('holi')

然后运行:

DEBUG=server npm test

就是这样!