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


104

我正在使用JavaScript测试运行程序“摩卡”。

我的测试失败了,因此我将使用进行调试console.log

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

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

编辑:

抱歉!- console.log在测试期间可以正常工作!我肯定一直期望它抑制输出,而且我没有正确检查自己的代码。感谢您的回应。那么...话虽如此...也许抑制通过测试的输出实际上会很好吗?嗯...

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

我是唯一发现这一难题的人吗?你们如何调试node.js?用调试器还是用console.log语句?


好交易!:)现在,我仍然通过moca测试非常“调试”节点。我看到在不久的将来的时候,我可能要EVAL一些选项在这里:stackoverflow.com/questions/1911015/...
扎克·邦汉

我建议您不要将Eclipse用于Node.js,这实际上不是使用IMO的最佳环境。JetBrains的WebStorm是一个很棒的Node.js IDE,尽管它要花钱。如果您正在免费寻找,我真的很喜欢新的Visual Studio Code,它对Node调试和其他使Node开发变得不错的东西提供了强大的内置支持。
dsw88 2015年

@ dsw88-我对WebStorm的经验是,一旦我们的文件结构开始变大和变深,它就会减慢速度。让我想起了Java应用的过去。
kirk.burleson

2
除了@ dsw88编写的内容之外:使用VS代码:插入“调试器”;在代码中的某处声明。使用--inspect-brk选项开始测试,然后使用VS Code调试操作“ NodeJs attach”。调试器从mocha脚本的第一行开始,您必须按一次Resume。下次您的“调试器”;声明已达成,您可以执行。
FabianTe

Answers:


49

您正在使用哪些Mocha选项?

可能与使用报告程序(-R)或ui(-ui)有关吗?

console.log(msg);

在我的测试运行中可以正常工作,尽管有时会有点笨拙。大概是由于测试运行的异步性质。

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

--require should
-R spec
--ui bdd

嗯..经过测试,没有任何mocha.opts,console.log仍然可以使用。


4
log()实际在哪里呢?
PositiveGuy

32

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


20

您可能还会将console.log期望放在失败之后并且没有被抓住,因此您的日志行将永远不会执行。


2
是的,那是我的问题,感谢您提出的建议。我将控制台日志移动到失败的.expect之前,现在显示出来。
redfox05 '16

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.