debugging摩卡testing的阻力最小的path是什么?

编辑2016年11月:节点现在有一个内置的debugging器,你可以开始 – --inspect 。 这个答案解释它: https : //stackoverflow.com/a/39901169/30946 。

我正在用咖啡标记build立一个摩卡testing。 在testing的顶部,我有:

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

我想在该debugging器行停止,因为theObject.coffee的对象没有被加载。 我正在使用节点检查器,它工作,sorta。

我拥有的过程是:

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

必须有一个更简单的方法。 看起来我应该能够运行一个debugging器,并停止在该debugging器线上,但我无法find它。

我有WebStorm,它有一个debugging器( 本文讨论设置它来运行摩卡testing,但它没有帮助我),但是当我启动它,它失败。 在WebStormdebugging窗口中运行的命令是:

 "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的问题。

Env:Windows 7,Webstorm,节点0.8.16,摩卡1.7.4,git-bash

问题是:如果你从头开始使用Mocha,debugging器最简单的方法是什么? 易于在这里的关键字。

编辑:因为问这个我已经停止使用Windows,并在Ubuntu工作。 我的摩卡debugging过程(我很less使用)是相同的。

10 Solutions collect form web for “debugging摩卡testing的阻力最小的path是什么?”

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

几个星期后,没有答案。 这是我find的最快捷的path。

  1. 写摩卡testing
  2. 安装node-inspector
  3. 启动node-inspector – 它现在将在5858上进行监听
  4. --debug-brk开始摩卡testing
  5. 在这一点上,摩卡testing暂停在第一行
  6. 打开Web浏览器并转到localhost:5858
  7. (可选:在testing文件的顶部添加一个debugging器行,在该文件停止之后设置断点)
  8. 按F10来获得代码
  9. 节点检查器将在任何有debugger行上停止。 有时它不会将代码文件的窗口移动到正确的位置,所以您必须按F10才能进入下一行,并显示它在文件中的位置。

命令行:

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

除了上面的@ jcollum的回答,我发现不是使用–debug-brk标志,而是使用–debug标志和-w(watch)

这样,当你从你的代码中添加和删除debugging器行时,mocha会自动重新加载testing,你的节点检查器将在适当的行上暂停。

这节省了不得不重新访问terminal不断地重新开始testing,然后不必要地在debugging器中点击“继续”以通过源的第一行。

使用最新版本的Mocha和节点检查器 ,这对我来说非常有用:

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

它将加载本地的Mocha可执行文件作为debugging过程,在第一行停止设置断点。

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

简而言之:

  1. 你需要WebStorm
  2. 在WebStorm中创build新的节点debuggingconfiguration文件
  3. 设置你的摩卡二进制Path to Node App JS File
  4. 添加断点并从WebStorm启动会话

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

请loginhttp://sa.github.io/iron-node/ 。 这是debuggingNode.js相关的最有效的软件。

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

在这里输入图像说明

在这里输入图像说明

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

 $ mocha $args -- debug 

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

 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 

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

关于Webstorm或PhpStorm,您可以添加一个特定的mochadebuggingconfiguration:

调试配置

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

如果项目中已经安装了摩卡,通过:

  npm install mocha --save 

要么

  yarn add mocha 

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

我必须提供正确的path到我的unit testing,并击中Include subdirectories /

由于我的项目是一个打字稿,我不得不补充:

 yarn add ts-node 

对于一个纯粹的js项目来说,这不是必须的。

现在,您可以运行整个testing服务,然后您可以从列表中select单个testing用例,然后运行它们并自行进行debugging。

现有的答案都没有提到阻力最小的path :当您需要debugging摩卡testing时,您可以简单地添加另一个检查您想要debugging的值的断言

 myVar.should.equal(expected); 

我发现这往往是我所需要的。 我只是删除了当我完成时用于debugging的额外断言。

一个现代化的方法是使用nodejs的检查器集成function 。 这相当简单的使用。 我已经在这篇文章中详细解释了如何使用它

  • unit testing反模式目录
  • 控制Visual Studio中unit testing的执行顺序
  • .NET 4.0代码合同 - 它们将如何影响unit testing?
  • Xcode:testing与DEBUG预处理器macros
  • 您在App Engine上使用了哪些方法进行轻量级Pythonunit testing?
  • 什么是unit testing,你是怎么做到的?
  • 针对Java EE 6 API进行testing
  • JUnit消息应该说明成功还是失败的条件?
  • 如何以编程方式closuresExpressJS的实例进行testing?
  • 最后的方法嘲笑
  • @Mock和@InjectMocks之间的区别