2015-01-15 51 views
6

我想在ruby中有類似binding.pry的東西,基本上,我希望能夠添加一行到我的代碼,並有一個調試器停在那裏,而業力運行我的角/茉莉測試角度/茉莉花/業力REPL工具

it('runs my jasmine test', function() { 
    var a = true; 
    binding.pry // stops code and enters REPL prompt 
    expect(a).toBe(true); 
}); 

那麼其結果將是一個提示

#

在那裏我可以在時間做的事情在該範圍內可用的變量,在這一點上

# a = false;

然後我可以退出並繼續執行。

# exit

就像與開發工具調試,但我想有下因緣這個過程在瀏覽器環境之外,並在終端內部。 我也發現https://github.com/alidavut/locus,但它似乎沒有在業力下工作。

回答

3

我不知道任何方式來啓動的業力過程一個REPL ,但你可以做的是簡單地寫:

debugger; 

在您要調試的地步。然後,如果在執行該行時瀏覽器的開發工具已經打開,則執行將暫停,您可以使用「監視表達式」,這對您來說可能已足夠。您可以訪問調用堆棧和所有本地變量。您也可以分配到監視表達式中的局部變量,並且當您恢復執行時新值將保持不變。

我只在Chrome上測試過。我要做的是:

  1. debugger;聲明
  2. 開始因緣。
  3. 打開Chrome開發工具。
  4. 保存一個觀察到的因果文件(所以現在測試將在開發工具已打開的情況下再次運行)。
  5. 利潤!

由於所有的測試代碼都是在瀏覽器上執行的,所以在業力方面做一個REPL需要更多的精力。要從業力流程控制REPL,您需要設置事件以通過業務設置與瀏覽器交談的套接字進行通信。如果你這麼傾向,應該可以做到。編輯:實際上,要做到這一點,你仍然需要能夠在一個特定的聲明,使JavaScript塊執行,我敢肯定debugger;是唯一的方法來做到這一點。

+0

令人遺憾的是,調試器在命令行上不起作用。不適用於PhantomJS。不能在nodeJS/gulp /其他命令行基於javascript的東西下工作。 – Cosmin

+0

你有沒有嘗試用'--remote-debugger'啓動PhantomJS? http://phantomjs.org/troubleshooting.html –