Angularjs 用于角度/茉莉花/因果报应的REPL工具
我希望在ruby中有binding.pry之类的东西,基本上,我希望能够在代码中添加一行代码,并在karma运行angular/jasmine测试时让调试器停在那里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); }); 结果将是一个提示 # 我可以在那个时间点对那个范围内可用的变
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?