2011-05-28 107 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