如何调试在phantomjs中运行的ember-cli测试

Dan*_*ell 23 phantomjs ember.js ember-cli

上下文:我对我的ember-cli应用程序进行了验收测试,测试在Chrome中运行得很好.然而,在phantomjs中,我的测试失败了 - 用户界面不会以同样的方式创建,我正在尝试找出原因.(我认为测试因https://github.com/ember-cli/ember-cli/issues/1763而被打破,但是如何调试的一般问题仍然存在)

在Chrome中,我可以在我的测试中使用标准调试工具,一切都很好 - 但是在phantomjs中,我无法使用调试器来实现它.我也没有看到console.log()消息显示在输出中 - 我得到的是我的终端窗口中的测试结果列表.

我可以通过编写类似的东西来获取诊断信息

equal(true, false, "This is a log message");
Run Code Online (Sandbox Code Playgroud)

然后我得到消息作为失败的断言的详细信息,或者我可以尝试找出DOM中的内容

equal(true, false, document.getElementsByClassName("my-class".innerHTML);
Run Code Online (Sandbox Code Playgroud)

但是这两个:停止测试进一步,b:只让我记录测试本身的信息,而不是我的应用程序.

有没有办法在"ember test"之外运行我的测试,或者某种方式附加到正在运行的测试过程?或者,有没有办法让console.log()消息显示在输出中?

Poo*_*avi 12

您可以公开PhantomJS调试端口并在浏览器中打开它,然后您可以在调试器断点处与上下文进行交互.

使用Testem测试运行器在PhantomJS上进行调试测试

  • 当我尝试这个时,我可以附加到phantomjs进程好了,但后来发生了一些奇怪的事情,看起来好像ember正在跳入并试图捕获阻碍调试器的异常.也就是说,它确实提醒我,我应该使用"ember test --server",然后从那里我得到所有控制台日志显示在testem窗口中,这是朝着正确方向迈出的重要一步.谢谢! (5认同)

Nel*_*elu 9

testem.json添加"phantomjs_debug_port": 9000.

在运行测试时,请http://localhost:9000在浏览器中访问并单击显示的长链接.

资料来源:cssugared


ace*_*des 6

我对其他答案没有运气,所以这就是我发现的:

return pauseTest();在测试中添加一个您希望能够在浏览器中与容器交互的位置.这是在文档中,但我不确定它是在指南中.

  • 我得到的错误是"pauseTest"未定义或不是函数.我想我必须从某处"导入"它,但不知道如何. (3认同)