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

Cos*_*min 6 node.js jasmine angularjs karma-runner karma-jasmine

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

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

结果将是一个提示

#

我可以在那个时间点对那个范围内可用的变量做些什么

# a = false;

然后我可以退出并继续执行.

# exit

就像使用开发工具进行调试一样,但我希望在浏览器环境之外和终端内部的业力流程中使用它.我也找到了https://github.com/alidavut/locus,但它似乎不适用于业力.

And*_*gee 3

我不知道有什么方法可以在业力过程中启动 repl ,但你可以做的就是简单地写:

debugger;
Run Code Online (Sandbox Code Playgroud)

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

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

  1. debugger;声明放进去。
  2. 开始业力。
  3. 打开 Chrome 开发工具。
  4. 保存观察到的 karma 文件之一(因此现在测试将在开发工具已打开的情况下再次运行)。
  5. 利润!

在 karma 端制作 REPL 需要付出更多努力,因为所有测试代码都在浏览器上执行。要从 karma 进程控制 REPL,您需要设置事件以通过 karma 设置与浏览器通信的套接字进行通信。如果你愿意的话应该是可行的。 编辑:实际上,要执行此操作,您仍然需要能够在特定语句处执行 Javascript 块,而且我很确定这debugger;是执行此操作的唯一方法。