45

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

我正在使用咖啡脚本构建摩卡咖啡测试。在测试的顶部,我有:

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

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

我拥有的过程是:

  1. 启动节点检查器
  2. 在命令行运行测试mocha --compilers coffee:coffee-script ./test/theObjectTests.coffee --ui bdd -d --debug-brk
  3. 转到节点检查器页面,如果它已经打开,请刷新它
  4. 等待文件theObject.coffee被加载,然后在正确的行放一个断点

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

我有 WebStorm,它有一个调试器(本文讨论了设置它以运行 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 调试过程(我不经常使用)是一样的。

4

10 回答 10

62

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

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

  1. 编写摩卡测试
  2. 安装node-inspector
  3. 开始node-inspector——现在它将在 5858 上监听
  4. 开始摩卡测试--debug-brk
  5. 此时 mocha 测试在第一行暂停
  6. 打开网络浏览器并转到 localhost:5858
  7. (可选:在测试文件的顶部添加调试器行,在该文件中停止后设置断点)
  8. 按 F10 让代码运行
  9. 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

于 2013-04-08T16:52:45.003 回答
11

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

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

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

于 2014-03-19T03:53:38.580 回答
8

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

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

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

于 2015-06-21T20:17:08.243 回答
6

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

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

在此处输入图像描述

在此处输入图像描述

于 2015-08-17T21:18:49.167 回答
5

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

简而言之:

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

Glenn Block 的屏幕截图的详细说明

于 2013-10-07T08:07:27.103 回答
3

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

$ mocha $args -- debug
于 2016-03-05T20:26:38.713 回答
1

现在在 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

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

于 2015-12-08T12:21:37.543 回答
1

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

调试配置

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

如果已经在项目中安装了 mocha 通过:

 npm install mocha --save

或者

 yarn add mocha

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

我必须为我的单元测试提供正确的路径,并为Include subdirectories/打上标记

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

yarn add ts-node

对于纯 js 项目,它应该不是必需的。

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

于 2017-08-10T16:26:10.520 回答
0

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

myVar.should.equal(expected);

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

于 2016-03-20T17:08:10.837 回答
0

一种现代的方法是使用 nodejs 的检查器集成功能。使用起来相当简单。我已经在这篇文章中详细说明了如何使用它

于 2016-11-26T16:13:21.977 回答