我有一个sproutcore应用程序,我想从ant脚本执行测试。该站点与rails应用程序交互,以便在url中发生/ backend时,请求将转到rails服务器。现在当我在命令行输入'sc-server'时,我可以访问测试选项卡。如果rails服务器没有运行,它会抱怨rails应用程序没有运行,所以我必须从rails应用程序执行'rails server',然后我可以通过在浏览器中打开各种url来运行sproutcore应用程序测试,例如{ {3}}
我的问题是:如何在不使用浏览器的情况下执行测试?我可以用什么命令来运行这些测试并在命令行上获得输出?
答案 0 :(得分:0)
安装https://github.com/ariya/phantomjs phantomjs 然后你可以在启动sproutcre应用程序和rails app
之后运行以下脚本var allTestsURL = "http://localhost:4020/webedge/en/current/tests.html";
var i, j;
var x = 0, y = 0;
var page = new WebPage();
page.open(allTestsURL, function (status) {
if (status !== 'success') {
console.log('Unable to access network');
}
window.setInterval(function() {
var str = "";
y++;
var st = page.evaluate(function () {
str = "";
if(document.body.querySelector("span.status span.passed")){
str += "passed: true";
console.log("str: " + str);
}
if (document.body.querySelector("span.status span.failed")){
str += ";failed: true";
console.log("str: " + str);
}
console.log("returning " + str);
return str;
});
console.log("status returned is " + st);
if (st == "passed: true") {
console.log("it all passes! ");
phantom.exit(0);
} else if(st.indexOf("failed") > 0){
console.log("tests have failed");
phantom.exit(1);
}
if(y > 25) {
console.log("exiting with error as not yet resolved");
phantom.exit(1);
}
}, 2000);
});
注意:sproutcore版本是1.6.0.1,传递的测试出现在span.passed选择器中,如果span.failed选择器中出现任何错误,则测试失败。我没有计算失败的测试;此脚本只检测是否有故障。它并非完全万无一失,但它符合我的目的。没有超时或任何东西,可能应该添加。但我们可以在此基础上继续发展。
sproutcore phantomjs的脚本已被探索,但它对我不起作用。任何想法为什么?