2015-01-15 50 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 –