在使用Karma运行测试时使用PhantomJS逐步执行代码

时间:2014-09-05 21:41:04

标签: javascript phantomjs karma-runner

我在PhantomJS上使用Karma运行我的测试,并且面临异步运行循环问题。我想知道在测试运行时是否有交互式调试代码(步骤)。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

如果您在业力测试中使用karma-phantomjs-launcher npm包,则可以在karma.conf.js文件中添加以下代码段以在调试器模式下运行PhantomJS:

browsers: ['PhantomJS_custom'],

// you can define custom flags
customLaunchers: {
  'PhantomJS_custom': {
    base: 'PhantomJS',
    debug: true
  }
}

在此之后,写一个debugger;语句,将断点放在代码中。

现在,当您启动业力测试运行器时,您将看到PhantomJS正在等待您的浏览器连接到调试器端口以开始执行测试。

29 12 2016 13:14:25.269:INFO [launcher]: Starting browser PhantomJS
29 12 2016 13:14:25.325:INFO [phantomjs.launcher]: ACTION REQUIRED:
29 12 2016 13:14:25.325:INFO [phantomjs.launcher]: 
29 12 2016 13:14:25.326:INFO [phantomjs.launcher]:   Launch browser at
29 12 2016 13:14:25.326:INFO [phantomjs.launcher]:   http://localhost:9000/webkit/inspector/inspector.html?page=2
29 12 2016 13:14:25.326:INFO [phantomjs.launcher]: 
29 12 2016 13:14:25.326:INFO [phantomjs.launcher]: Waiting 15 seconds ...

将您的镶边指向日志中指定的地址。现在,您将看到Phantomjs提供的调试器界面。代码在PhantomJS引擎中执行,但您可以从任何基于webkit的浏览器中观察断点,计算表达式并执行许多调试操作。

答案 1 :(得分:1)

您可以在其中一个测试块中设置debugger语句。然后将浏览器指向您正在运行业力的任何URL并打开您的开发工具。调试器到达您的测试块时应该触发。

假设茉莉花/摩卡与期待:

it('fires a debugger', function () {
  var bool = true || false;
  debugger;

  while(bool) {
    // uh oh...
  }
});

根据我的经验,调试器将同时触发http://localhost:<your-karma-port>http://localhost:<your-karma-port>/debug.html,但您可以使用调试URL获得更多运气。

如果您无法查看调试程序语句,则测试设置可能会出现更大问题。