在PhantomJS中从Ant运行异步QUnit测试
Running asynchronous QUnit tests from Ant in PhantomJS
我正试图使用PhantomJS从Ant构建脚本中运行一组异步QUnit测试。我所拥有的似乎正在发挥作用,但似乎应该有更好的方法来实现它
PhantomJS加载时运行的脚本(简化)如下:
var page = require("webpage").create();
page.onConsoleMessage = function(msg) {
if(msg.indexOf("FINISHED") > -1) {
var failed = msg.split(" ");
phantom.exit(failed[1]);
}
};
page.open("testrunner.html", function() {
page.evaluate(function() {
QUnit.done = function(result) {
console.log("FINISHED " + result.failed);
};
});
});
这将加载包含测试的文件(testrunner.html
)。它使用PhantomJS evaluate
方法在加载页面的上下文中运行一些代码。该代码将事件处理程序绑定到QUnit done
事件。在事件处理程序中,所发生的只是对console.log
的简单调用。
默认情况下,PhantomJS不会对console.log
调用执行任何操作,因此我还将事件处理程序绑定到PhantomJSonConsoleMessage
事件。当执行QUnit.done
事件处理程序中的console.log
调用时,会触发onConsoleMessage
事件。如果控制台消息与给定的字符串匹配,那么我们就知道测试已经完成运行。然后,我们可以退出PhantomJS,退出代码等于失败的单元测试数(Ant脚本使用此代码来确定构建的这一部分是否成功)。
我的问题是,有没有更好的方法来确定单元测试何时完成运行?
您检查过phantom js webiste上提供的qunit runner吗?https://github.com/ariya/phantomjs/blob/1.2/examples/run-qunit.js
从本质上讲,你只需将它指向你的qunit测试页面(testrunner.html),它就会抓取页面,看看是否有任何东西失败,并将结果输出到控制台。您可以修改它以打印到一个文件中,然后该文件可以集成到您的构建脚本中。
- esri javascript异步打印
- JavaScript异步问题
- $translateProvider.useStaticFilesLoader的Angular Translate异步定
- 异步facebook功能
- 异步并行错误
- 在Redux中,我应该在哪里编写复杂的异步流
- 角度异步http自动完成
- 如何从SeleniumWebdriver获取异步Javascript响应
- 如何使用异步调用更改工厂的变量
- 在等待异步任务时永久循环
- 如何在异步函数中使用javascript对象
- 调用后不异步Ajax忽略函数
- learnyounode#9杂耍异步
- 异步获取数据使用JavaScript同步获取数据
- 检查qunit中是否有两个异步调用
- QUnit 异步测试在出错后不会继续
- qunit + mockjax:我什么时候应该在异步测试中调用 mockjaxClear
- 在PhantomJS中从Ant运行异步QUnit测试
- 任何使用qunit测试异步jquery插件的方法,避免嵌入"start()"并保持异步
- QUnit,用于异步ajax请求的设置和拆卸