我正在使用javascript test-runner“Mocha”。
我有一个失败的测试,所以我想使用console.log
进行调试。
但是当测试运行时,没有输出(只有Mocha的测试结果)。
似乎Mocha已经捕获并压制了我的console.log
输出!
如何让Mocha显示我的输出? (对于失败的测试)?
修改
巨大的道歉! - console.log
在测试期间有效!我一定期待它抑制输出,我没有正确检查自己的代码。谢谢你的回复。
所以...说的......也许真的很好地抑制通过测试的输出?嗯...
在相关的说明中:我想使用console.log
,因为我在尝试让Eclipse调试器连接到node.js时遇到了很多麻烦。
我是唯一一个发现这个棘手的人吗?你们怎么调试node.js?使用调试器或console.log
语句?
答案 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
就是这样!