使用node-inspector调试远程mocha.js测试?

时间:2015-05-06 17:21:49

标签: javascript node.js mocha node-inspector

我在远程计算机上有一个测试文件,我希望用node-inspector遍历它。所以,在远程机器上(Vagrantfile):

node-inspector &
mocha --debug-brk foo.test.js

然后,在我的开发机器上,我打开Canary并转到:

http://127.0.0.1:8080/debug?ws=127.0.0.1:8080&port=5858

但是,我无法调试我的测试,因为调试器会在node_modules/mocha/bin/_mocha的第一行中断,并且我的测试文件在{{{{}}中不可见1}}标签

enter image description here

我尝试在line 398上的_mocha中设置断点:

Sources

但是当我尝试进入'时,看到runner = mocha.run(program.exit ? exit : exitLater); 函数执行,它就不会介入。我可以在控制台中看到输出,所以它确实执行虽然。如果我设置一个断点directly in the run function,它就不会在那里打破。

此外,test file永远不会出现在"来源"标签,所以我不能在其中设置断点。我也尝试在其中添加run语句,但它仍然没有中断。

如何让node-inspector显示测试文件并逐步完成?

debugger

2 个答案:

答案 0 :(得分:1)

我经常遇到这种情况,而且我不知道是否有更好的解决方案(如果有我很高兴听到它),但我发现我必须让调试器前进到了解我想要调试的其他文件的程度。在没有看到更多代码的情况下,我无法提供有关前进位置的更具体建议,但会尝试找出测试文件将在可用的源文件中加载到哪里并前进到那里。当代码运行时,它会逐渐向Sources面板添加更多文件。

答案 1 :(得分:1)

实际上有两个问题:

  1. 断点不受尊重
  2. 测试文件不可见
  3. 最近发布的node-inspector@v0.10.1修复了第一个问题。因此,断点将在任何地方得到尊重。

    还有第二个问题。正如@JMM所说,'Sources'选项卡中的文件列表是动态的,当进程中断时,测试文件不会出现在那里。我最终做的是在测试函数运行之前,在mocha/lib/runnable.js#266,在这一行上设置一个断点:

    var result = fn.call(ctx);
    

    fn是测试功能。一旦你进入它,测试文件将出现在Sources选项卡中,调试器的光标将位于测试函数的第一行。