【问题标题】:REPL tool for angular/jasmine/karma用于 angular/jasmine/karma 的 REPL 工具
【发布时间】:2023-03-11 18:51:01
【问题描述】:

我想在 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;

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

# exit

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

【问题讨论】:

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


    【解决方案1】:

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

    debugger;
    

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

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

    1. debugger; 语句放入。
    2. 开始业力。
    3. 打开 Chrome 开发工具。
    4. 保存一个观察到的 karma 文件(这样现在测试将在开发工具已打开的情况下再次运行)。
    5. 利润!

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

    【讨论】:

    • 遗憾的是调试器在命令行上不起作用。不适用于 PhantomJS。不适用于 nodeJS/gulp/ 其他基于命令行的 javascript 东西。
    • 你试过用--remote-debugger启动PhantomJS吗? phantomjs.org/troubleshooting.html
    猜你喜欢
    • 2015-12-07
    • 2015-02-10
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    • 2019-01-03
    相关资源
    最近更新 更多