调试 mocha 测试的阻力最小的途径是啥?

Posted

技术标签:

【中文标题】调试 mocha 测试的阻力最小的途径是啥?【英文标题】:what's the least resistance path to debugging mocha tests?调试 mocha 测试的阻力最小的途径是什么? 【发布时间】:2012-12-26 10:48:53 【问题描述】:

2016 年 11 月编辑:Node 现在有一个内置调试器,您可以从 --inspect 开始。这个答案解释了它:https://***.com/a/39901169/30946。

我正在使用 coffeescript 构建一个 mocha 测试。就在我的测试顶部:

require "../assets/js/theObject.coffee"
debugger
ss = new TheObject()

我想在调试器行停下来,因为theObject.coffee 中的对象没有被加载。我正在使用节点检查器,它可以正常工作。

我的流程是:

    启动节点检查器 在命令行使用mocha --compilers coffee:coffee-script ./test/theObjectTests.coffee --ui bdd -d --debug-brk 运行测试 进入node-inspector页面,如果已经打开则刷新 等待文件theObject.coffee被加载,然后在正确的行放一个断点

一定有更简单的方法。似乎我应该能够运行调试器并让它在该调试器行上停止,但我无法找到它。

我有 WebStorm,它有一个调试器(this article discusses 设置它来运行 mocha 测试,但它没有帮助我),但是当我启动它时,它失败了。在 WebStorm 调试窗口中运行的命令是:

"C:\Program Files\nodejs\node.exe" --debug-brk=64232 C:\Users\jcollum\AppData\Roaming\npm\_mocha

C:\Users\jcollum\AppData\Roaming\npm\_mocha:2
basedir=`dirname "$0"`

我怀疑这可能是特定于 Windows 的问题。

环境:Windows 7、Webstorm、节点 0.8.16、mocha 1.7.4、git-bash

问题:如果您是从头开始使用 Mocha,那么让调试器运行并轻松停止在调试器行上的最简单方法是什么?简单是这里的关键词。

编辑:因为问这个我已经停止使用 Windows 并在 Ubuntu 中工作。我的 mocha 调试过程(我不经常使用)是一样的。

【问题讨论】:

查看我对相关问题的回答,了解什么对我有用:***.com/a/29351654/3304034 【参考方案1】:

几年后编辑:Node 6+ 中的最短路径是:mocha --debug-brk --inspect ./test.js 加上 Node Inspector Manager 插件。

许多周后,没有答案。这是我找到的最快路径。

    编写摩卡测试 安装node-inspector start node-inspector -- 现在它将在 5858 上监听 用--debug-brk开始摩卡测试 此时 mocha 测试在第一行暂停 打开网络浏览器并转到 localhost:5858 (可选:在测试文件的顶部添加调试器行,在该文件中停止后设置断点) 按 F10 获取代码 node-inspector 将停在任何带有debugger 的行上。有时它不会将代码文件的窗口移动到正确的位置,因此您必须按 F10 才能使其进入下一行并显示它在文件中的位置。

命令行:

node-inspector & mocha --compilers coffee:coffee-script/register ./test/appTests.coffee --ui bdd -d -g "should X then Y" --debug-brk

【讨论】:

这也是我找到的最好的。如果您找到更好的方法,请更新此答案:) @DmitryMatveev 有时摩卡咖啡不会失败,它只是坐在那里。调试对此很有帮助。根据我的问题,您对我的代码做了很多假设。 @DmitryMatveev 您正在描述一个单元测试。还有其他几种类型的测试非常方便调试。 @Dmitry - 即使是小而简单的测试也可能被误解 - 调试器可以确认一个人的期望。 @DmitryMatveev - 所以如果我没看错的话,在一个完美的世界里,没有人需要调试器,因为每个人总是对所有内容进行 TDD,而且他们都“正确”地完成了这一切。我完全同意。好吧,是时候回到我每天花几个小时尝试的现实世界了!【参考方案2】:

使用 WebStorm 节点调试器的替代方法。

简而言之:

    您需要 WebStorm 在 WebStorm 中创建新的节点调试配置文件 将 mocha 二进制文件的路径设置为 Path to Node App JS File 添加断点并从 WebStorm 启动会话

Detailed instruction 由 Glenn Block 截图。

【讨论】:

我第一次使用 Webstorm 时尝试过这个。无法正常工作,放弃了。我很久以前就发现了那篇博文。 奇怪,猜运气不好。最近对我来说就像一个魅力,我真的很喜欢它是多么容易设置。考虑再试一次:) 过时的博客文章。观看此示例设置,我取得了更大的成功:youtube.com/watch?v=4mKiGkokyx8&feature=youtu.be【参考方案3】:

除了上面@jcollum 的回答,我发现不要使用--debug-brk 标志,最好只使用--w (watch) 的--debug 标志

这样,当您在代码中添加和删除调试器行时,mocha 将自动重新加载测试,并且您的节点检查器将在相应的行上暂停。

这样就不必重新访问终端不断重新启动测试,然后在调试器中不必要地点击“继续”以通过源代码的第一行。

【讨论】:

我无法让 jcollums 解决方案在 OS X 中运行。源文件和规范文件似乎没有加载到节点检查器中。这对我有用。 我得到Error: Injection failed: no require in current frame.--debug。甚至用--no-preload 尝试过,但仍然必须按暂停和播放。【参考方案4】:

使用最新版本的 Mocha 和 node-inspector,这对我来说非常有用:

$ node-debug ./node_modules/mocha/bin/_mocha

它将本地 Mocha 可执行文件作为调试进程加载,在第一行停止以便您设置断点。

【讨论】:

【参考方案5】:

注意http://s-a.github.io/iron-node/。这是调试任何与 Node.js 相关的最有效的软件。

$ iron-node ./node_modules/mocha/bin/_mocha

【讨论】:

您能详细说明一下吗?这与节点检查器相比有什么更好的地方? 只是一些事情...... ironNode 确实支持主题。 IronNode 不使用 WebSockets 或类似的东西。 (没有连接丢失消息或类似的东西)。 IronNode 独立于本地节点安装工作,因为它有自己的。没有太快的脚本来附加调试器问题。无需 --debug-brk 或其他启动调试会话所需的准备工作。没有处于奇怪状态行为的 UI。没有 UI 不加载或不工作,刷新没有帮助行为没有调试器需要很长时间才能启动行为。 :) 就试一试吧。我只使用 这对我来说比节点检查器快得多。感谢您发布此内容。【参考方案6】:

现在在 Webstorm 中,您可以使用 mocha 配置进行设置。对我来说几乎是开箱即用的:

Node interpreter: /usr/local/bin/node
Working directory: /Users/me/sites/mysite
Mocha Package: /Users/me/sites/mysite/node_modules/mocha

然后

All in directory
Test directory: /Users/me/sites/mysite/test

它还向您显示了它运行时使用的参数,因此您可以在需要时将它们复制到另一个环境。

【讨论】:

是的! @Tree 它会停在那里【参考方案7】:

如果它是一个 Node 应用程序,那么从命令行使用集成的 Node 调试器是最快的明星之路:

$ mocha $args -- debug

【讨论】:

【参考方案8】:

现有答案均未提及阻力最小的路径:当您需要调试 Mocha 测试时,您可以简单地添加另一个断言来检查您要调试的值。

myVar.should.equal(expected);

我发现这通常就是我所需要的。完成后,我只是删除了用于调试的额外断言。

【讨论】:

【参考方案9】:

一种现代的方法是使用 nodejs 的inspector integration feature。使用起来相当简单。我已经在this post写了详细的使用说明了

【讨论】:

更新了问题。【参考方案10】:

对于 Webstorm 或 phpStorm,您可以添加特定的 mocha 调试配置:

你必须通过绿色添加,你可以给它一个名字。

如果项目中已经安装了mocha via:

 npm install mocha --save

 yarn add mocha

它将在您的项目中找到相应的模块。

我必须为我的单元测试提供正确的路径,并达到Include subdirectories/

由于我的项目是一个打字稿,我必须添加:

yarn add ts-node

对于纯 js 项目,应该没有必要。

现在您可以运行整个测试套件,然后您可以从列表中选择单个测试用例并运行它们并自行调试它们。

【讨论】:

以上是关于调试 mocha 测试的阻力最小的途径是啥?的主要内容,如果未能解决你的问题,请参考以下文章

使用 mocha 的 --debug-brk 开关启用节点调试器的正确方法是啥?

测试相关知识分享(百度和其他途径查找到的)

2021学习Rust语言的最佳途径

channel是啥意思

VSCode下调试mocha测试用例

如何在 Mocha 测试中调试“错误:无理由或错误理由拒绝承诺”?