Ember.js 如何调试在phantomjs中运行的ember cli测试

Ember.js 如何调试在phantomjs中运行的ember cli测试,ember.js,phantomjs,ember-cli,Ember.js,Phantomjs,Ember Cli,上下文:我对我的ember cli应用程序进行了一个验收测试,该测试在Chrome中完全通过。然而,在phantomjs中,我的测试失败了——UI的创建方式不同,我正在试图找出原因。(我认为测试失败是因为,但如何调试的一般问题仍然存在) 在Chrome中,我可以在测试中使用标准的调试工具,一切正常——但在phantomjs中,我无法使用调试器。我也没有看到console.log()消息显示在输出中——我在终端窗口中得到的只是一个测试结果列表 我可以通过写一些东西来获取诊断信息,比如 equal(

上下文:我对我的ember cli应用程序进行了一个验收测试,该测试在Chrome中完全通过。然而,在phantomjs中,我的测试失败了——UI的创建方式不同,我正在试图找出原因。(我认为测试失败是因为,但如何调试的一般问题仍然存在)

在Chrome中,我可以在测试中使用标准的调试工具,一切正常——但在phantomjs中,我无法使用调试器。我也没有看到console.log()消息显示在输出中——我在终端窗口中得到的只是一个测试结果列表

我可以通过写一些东西来获取诊断信息,比如

equal(true, false, "This is a log message");
然后我得到消息作为失败断言的详细信息,或者我可以尝试使用

equal(true, false, document.getElementsByClassName("my-class".innerHTML);
但是这两个都是a:停止测试,b:只让我记录测试本身的信息,而不是我的应用程序


是否有一种方法可以在“ember测试”之外运行我的测试,或者附加到正在运行的测试进程?或者,是否有方法获取console.log()消息以显示在输出中?

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


要回答我原始问题中关于“如何获取日志消息以显示”的部分,如果我使用TAP reporter,那么console.log(在我的应用程序和测试中)消息将显示在输出中;xunit reporter没有通过console.log登录,这让我很困惑


(我也遇到了在teamcity上运行测试与在本地运行测试行为不同的问题;在这种情况下,将TAP reporter与(或TAP teamcity插件)结合使用可以获得日志消息和测试计数)

testem.json
中添加
“phantomjs_debug_端口”:9000

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


资料来源:

我对其他答案没有把握,所以我发现如下:


添加一个
返回pauseTest()代码。这在文档中,但我不确定它是否在指南中。

当我尝试这样做时,我可以连接到phantomjs进程,但后来发生了一些奇怪的事情,似乎ember正在跳入并试图捕获阻碍调试器的异常。这就是说,它确实提醒我应该使用“ember test--server”,从那里我可以在testem窗口中看到所有控制台日志,这是朝着正确方向迈出的一大步。谢谢我在代码中发现了它的“文档化”(在注释中)。谢谢。我得到的错误是
pauseTest
未定义或不是函数。我想我必须从某处导入它,但不确定如何导入。如果您遇到任何问题,请确保您机器上的其他设备没有使用端口9000进行其他操作2017年阅读此内容的任何人都会收到警告。暴露在端口9000上的检查员极不稳定,无法用于其预期目的。尝试了不同的端口,但没有任何区别。