角度/茉莉/业力的REPL工具

时间:2015-01-15 20:16:00

标签: angularjs node.js jasmine karma-runner karma-jasmine

我想在ruby中有类似binding.pry的东西,基本上,我希望能够在我的代码中添加一行,并让调试器停在那里,而karma正在运行我的角度/茉莉花测试

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,但它似乎没有在业力下工作。

1 个答案:

答案 0 :(得分:3)

我不知道有什么方法可以在业力流程中启动repl ,但你可以做的只是写:

debugger;

在您要调试的位置。然后,如果您在执行该行时已经打开了浏览器的开发工具,则执行将暂停,您将能够使用可能足够的“监视表达式”。您可以访问调用堆栈和所有本地变量。您还可以在监视表达式中分配局部变量,并在恢复执行时保留新值。

我只在Chrome上测试了这个。我要做的是:

  1. debugger;语句放入。
  2. 开始业力。
  3. 打开Chrome开发工具。
  4. 保存一个观看的业力文件(所以现在测试将在dev工具已经打开的情况下再次运行。)
  5. 利润!
  6. 在业力方面进行REPL需要更多努力,因为所有测试代码都在浏览器上执行。要从业力流程控制REPL,您需要设置事件以通过业务设置与浏览器通信的套接字进行通信。如果你这么倾向应该是可行的。 编辑:实际上,为了做到这一点,你仍然需要能够在特定声明中执行Javascript块执行,而我是非常确定debugger;是唯一的方法。