如何在 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 调试端口并在浏览器中打开它,然后您可以在调试器断点处与上下文交互。
为了回答我最初关于 "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();
。这在文档中,但我不确定它是否在指南中。
上下文:我对我的 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 调试端口并在浏览器中打开它,然后您可以在调试器断点处与上下文交互。
为了回答我最初关于 "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();
。这在文档中,但我不确定它是否在指南中。