我在PhantomJS上使用Karma运行我的测试,并且面临异步运行循环问题。我想知道在测试运行时是否有交互式调试代码(步骤)。
非常感谢任何帮助。
答案 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获得更多运气。
如果您无法查看调试程序语句,则测试设置可能会出现更大问题。