2011-05-28 81 views

回答

9

我最后写一个小UTIL称为切换:

require('tty').setRawMode(true); 
var stdin = process.openStdin(); 

exports.toggle = function(fireThis) 
{ 
    if (process.argv.indexOf("debug")!=-1) 
    { 
     console.log("debug flag found, press any key to start or rerun. Press 'ctrl-c' to cancel out!"); 
     stdin.on('keypress', function (chunk, key) { 
      if (key.name == 'c' && key.ctrl == true) 
      { 
       process.exit(); 
      } 
      fireThis(); 
     }); 
    } 
    else 
    { 
     console.log("Running, press any key to rerun or ctrl-c to exit."); 
     fireThis(); 
     stdin.on('keypress', function (chunk, key) { 
      if (key.name == 'c' && key.ctrl == true) 
      { 
       process.exit(); 
      } 
      fireThis(); 
     }); 



    } 
} 

你可以将其放到你的单元测试,如:

var toggle = require('./toggle'); 

toggle.toggle(function(){ 

    var vows = require('vows'), 
    assert = require('assert'); 

    vows.describe('Redis Mass Data Storage').addBatch({ 

.... 

然后运行你的测试,如:节点--debug MYFILE .js调试。如果您运行调试切换将等待,直到你什么,但ctrl-c。 Ctrl-c退出。你也可以重新运行,这很好。

w0000t。

3

我没有受过教育的猜测是,你需要修补茉莉花,我相信它产生了一个新的节点进程或运行测试时的东西,而这些新进程需要启用调试功能。

我也有类似的愿望,并设法使用Eclipse作为调试expressso工作: http://groups.google.com/group/nodejs/browse_thread/thread/af35b025eb801f43

...但我意识到:如果我需要逐步完成我的代码来了解它,我可能需要重构代码(可能会更易于测试),或将我的测试分解成更小的单元。

你的测试是你的调试器。

+0

显然不是真的。看伊恩的答案。 – 2013-08-17 16:00:37

+0

我也相信node-inspector不能与jasmine-node一起工作,因为jasmine-node会产生子进程,而node-inspector不会处理这个。搜索解决方案给出的提示是,process.debug_port必须设置为每个子进程的唯一值,但这需要篡改茉莉花节点源代码,我猜 – xorcus 2015-02-01 21:13:26

28

总之,刚刚调试茉莉节点:

node --debug-brk node_modules/jasmine-node/lib/jasmine-node/cli.js spec/my_spec.js 

如果你看一下jasmine-node脚本的来源,它只是调用cli.js,我发现我可以调试脚本就好了。

我想使用节点检查器来调试CoffeeScript测试。只需添加--coffee开关就可以很好地工作,例如

node --debug-brk node_modules/jasmine-node/lib/jasmine-node/cli.js --coffee spec/my_spec.coffee 
+0

实际上,这似乎工作正常。加载调试器后按下'恢复脚本执行'按钮。这会将您带到第一个断点。我不确定为什么我的第一次测试退出了。 – 2013-08-17 15:59:53

+1

重要的是不要指定--autotest命令行选项,因为它使默认情况下不可调试的jasmine-node spawn子进程没有这个选项,它工作的很好 – xorcus 2015-02-01 21:46:20

+1

如果它帮助别人 - 我想用更新的节点检查器: 'node-debug /usr/local/lib/node_modules/jasmine-node/lib/jasmine-node/cli.js spec /' – 2015-04-22 21:49:27