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

jco*_*lum 41 debugging unit-testing mocha.js node.js coffeescript

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

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

require "../assets/js/theObject.coffee"
debugger
ss = new TheObject()
Run Code Online (Sandbox Code Playgroud)

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

我的过程是:

  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"`
Run Code Online (Sandbox Code Playgroud)

我怀疑这可能是一个特定于Windows的问题.

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

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

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

jco*_*lum 61

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

几周后,没有答案.这是我找到的最快捷的路径.

  1. 写摩卡测试
  2. 安装 node-inspector
  3. 开始node-inspector- 它现在将在5858上收听
  4. 开始摩卡测试 --debug-brk
  5. 此时,mocha测试在第一行暂停
  6. 打开Web浏览器并转到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

  • @DmitryMatveev你正在描述一个单元测试.还有其他几种类型的测试,其中调试非常方便. (7认同)
  • 这是我发现的最好的.如果你找到更好的方法请更新这个答案:) (2认同)
  • @DmitryMatveev有时摩卡不会失败,它只是坐在那里.调试对此有帮助.你根据我的问题假设我的代码很多. (2认同)
  • @DmitryMatveev - 所以,如果我正确地阅读这个,在一个完美的世界中,没有人需要调试器,因为每个人总是TDD所有东西,并且他们都"正确"地完成了这一切.我完全同意.好吧,是时候回到现实世界,我每天都要花几个小时! (2认同)

cap*_*lam 11

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

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

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


doi*_*web 8

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

$ node-debug ./node_modules/mocha/bin/_mocha
Run Code Online (Sandbox Code Playgroud)

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


Ste*_*hlf 6

请访问http://sa.github.io/iron-node/.这是调试Node.js相关的最有效的软件.

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

在此输入图像描述

在此输入图像描述


Bro*_*ock 5

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

简而言之:

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

Glenn Block截图的详细说明.