Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 用于角度/茉莉花/因果报应的REPL工具_Angularjs_Node.js_Jasmine_Karma Runner_Karma Jasmine - Fatal编程技术网

Angularjs 用于角度/茉莉花/因果报应的REPL工具

Angularjs 用于角度/茉莉花/因果报应的REPL工具,angularjs,node.js,jasmine,karma-runner,karma-jasmine,Angularjs,Node.js,Jasmine,Karma Runner,Karma Jasmine,我希望在ruby中有binding.pry之类的东西,基本上,我希望能够在代码中添加一行代码,并在karma运行angular/jasmine测试时让调试器停在那里 it('runs my jasmine test', function () { var a = true; binding.pry // stops code and enters REPL prompt expect(a).toBe(true); }); 结果将是一个提示 # 我可以在那个时间点对那个范围内可用的变

我希望在ruby中有binding.pry之类的东西,基本上,我希望能够在代码中添加一行代码,并在karma运行angular/jasmine测试时让调试器停在那里

it('runs my jasmine test', function () {
  var a = true;
  binding.pry // stops code and enters REPL prompt
  expect(a).toBe(true);
});
结果将是一个提示

#

我可以在那个时间点对那个范围内可用的变量做一些事情

#a=false

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

#退出

就像使用开发工具进行调试一样,但我希望在浏览器环境之外和终端内部进行karma过程。
然而,我也发现,在因果报应的情况下,它似乎不起作用。

我不知道在因果报应过程中启动repl的任何方法,但你可以做的只是写下:

debugger;
在您要调试的位置。然后,如果在执行该行时浏览器的开发工具已经打开,那么执行将暂停,并且您可以使用“监视表达式”,这对您来说可能已经足够了。您可以访问调用堆栈和所有局部变量。您还可以在监视表达式中为局部变量赋值,当您恢复执行时,新值将保持不变

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

  • 放入
    调试器语句
  • 开始因果报应
  • 打开Chrome开发工具
  • 保存一个关注的karma文件(这样现在测试将在开发工具已经打开的情况下再次运行)
  • 利润
    由于所有测试代码都是在浏览器上执行的,因此在karma端进行REPL需要付出更多的努力。要控制来自karma流程的REPL,您需要设置事件,通过karma设置的与浏览器对话的套接字进行通信。如果你愿意的话,应该是可行的EDIT:实际上,要做到这一点,您仍然需要能够在特定语句中执行Javascript块,我非常确定
    调试器是执行此操作的唯一方法。

    遗憾的是,调试器无法在命令行上工作。不适用于PhantomJS。在nodeJS/gulp/其他基于命令行的javascript工具下无法工作。您是否尝试过使用
    --远程调试器
    启动PhantomJS?