2014-09-05 45 views
5

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

任何帮助,非常感谢。

+0

可能有更好的方法,但我只是用浏览器的开发工具。在chrome中设置一个断点,或使用'debugger;'语句。 – 2014-09-05 22:03:02

+0

我会这样做,但问题是我在PhantomJS上专门面对一个问题。这些测试在Chrome和Firefox上运行得很好。 – 2014-09-05 22:25:40

+0

Nick的意思是说,在普通的phantomjs中有一个远程调试器,你可以用'debugger;'设置断点。 – 2014-09-05 22:30:23

回答

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有更多的运气。

如果您无法看到您的调试器语句,那么您的测试设置可能存在更大的问题。

2

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

browsers: ['PhantomJS_custom'], 

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

在此之后,写下你想要一个debugger;声明将断点放入代码中。

现在,当您启动karma测试运行器时,您会看到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 ... 

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

相关问题