调试mocha测试的最小阻力路径是什么?

时间:2013-01-11 19:22:59

标签: node.js unit-testing debugging coffeescript mocha

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

我正在用coffeescript建立一个摩卡测试。在测试的顶部,我有:

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

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

我的过程是:

  1. 启动node-inspector
  2. 使用mocha --compilers coffee:coffee-script ./test/theObjectTests.coffee --ui bdd -d --debug-brk
  3. 在命令行运行测试
  4. 转到node-inspector页面,如果已经打开则刷新它
  5. 等待加载文件theObject.coffee,然后在正确的行上放置一个断点
  6. 必须有一种更简单的方法。看起来我应该能够运行一个调试器并让它停在那个调试器行上,但我无法找到它。

    我有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,摩卡1.7.4,git-bash

    问题:如果你是从头开始使用Mocha,那么调试器的最简单方法是什么才能轻松停在调试器线上?这里的关键字很简单。

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

10 个答案:

答案 0 :(得分:60)

编辑,多年后:节点6+中的最短路径是:mocha --debug-brk --inspect ./test.js与Node Inspector Manager插件相结合。

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

  1. 写mocha测试
  2. 安装node-inspector
  3. 开始node-inspector - 它现在将在5858
  4. 上收听
  5. 使用--debug-brk
  6. 启动mocha测试
  7. 此时mocha测试暂停在第一行
  8. 打开网络浏览器并转到localhost:5858
  9. (可选:在测试文件的顶部添加调试器行,在该文件中停止后设置断点)
  10. 点击F10获取代码
  11. node-inspector将停在任何有debugger的行上。有时它不会将代码文件的窗口移动到正确的位置,因此您必须按F10才能使其前进到下一行并显示文件中的位置。
  12. 命令行:

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

答案 1 :(得分:11)

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

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

这节省了不得不重新访问终端不断重启测试,然后不必要地在调试器中“继续”以超过源的第一行。

答案 2 :(得分:8)

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

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

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

答案 3 :(得分:6)

领导http://s-a.github.io/iron-node/。这是调试Node.js相关的最有效的软件。

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

enter image description here

enter image description here

答案 4 :(得分:5)

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

简而言之:

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

    Detailed instruction,其中包含Glenn Block的截图。

答案 5 :(得分:3)

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

$ mocha $args -- debug

答案 6 :(得分:1)

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

mocha

然后

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

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

答案 7 :(得分:1)

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

Debug configuration

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

如果项目中已安装的mocha通过:

 npm install mocha --save

 yarn add mocha

它会在你的项目中找到相应的模块。

我必须为我的单元测试提供正确的路径,然后点击Include subdirectories /

的标记

由于我的项目是打字稿,我不得不添加:

yarn add ts-node

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

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

答案 8 :(得分:0)

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

myVar.should.equal(expected);

我发现这通常都是我需要的。我刚刚删除了用于调试的额外断言。

答案 9 :(得分:0)

现代的方法是使用nodejs的inspector integration feature。它使用起来相当简单。我已经在this post

中详细解释了如何使用它