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

How to debug ember-cli tests running in phantomjs

上下文:我对我的 ember-cli 应用程序进行了验收测试,测试在 Chrome 中顺利通过。但是,在 phantomjs 中,我的测试失败了—— UI 没有以相同的方式创建,我正在尝试找出原因。 (我认为测试因为https://github.com/ember-cli/ember-cli/issues/1763而被破坏,但如何调试的一般问题仍然存在)

在 Chrome 中,我可以在我的测试中使用标准调试工具,一切都很好 -- 但在 phantomjs 中,我无法使用调试器进行调试。我也没有在输出中看到 console.log() 消息——我得到的只是终端中的测试结果列表 window.

我可以通过写类似

的东西来获取诊断信息
equal(true, false, "This is a log message");

然后我收到消息作为失败断言的详细信息,或者我可以尝试用

找出 DOM 中的内容
equal(true, false, document.getElementsByClassName("my-class".innerHTML);

但是这两个 a:stop 测试都在继续,并且 b:only 让我记录来自测试本身的信息,而不是我的应用程序。

有没有办法在 "ember test" 之外 运行 我的测试,或者有什么方法可以附加到 运行ning 测试进程?或者,有没有办法让 console.log() 消息显示在输出中?

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

Debugging tests on PhantomJS using Testem test runner

为了回答我最初关于 "how do I get log messages to show up" 的部分问题,如果我使用 TAP 报告器,那么 console.log(在我的应用程序和测试中)消息会显示在输出中; xunit 记者没有通过 console.log,这让我很困惑。

(我还遇到了 运行 teamcity 测试与本地 运行 行为不同的问题;在那种情况下,将 TAP 报告器与 https://github.com/aghassemi/tap-xunit(或 TAP teamcity 插件)让我获取日志消息并测试计数)

testem.json 中添加 "phantomjs_debug_port": 9000

当您 运行 您的测试在浏览器中访问 http://localhost:9000 并单击显示的长 link。

来源:cssugared

我没有找到其他答案,所以这是我发现的:

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