2011-12-13 66 views
1

我有一個sproutcore應用程序,其測試我想從一個螞蟻腳本執行。該站點與一個Rails應用程序進行交互,以便在URL中發生/後端時,該請求將發送到Rails服務器。現在當我在命令行上輸入'sc-server'時,我可以訪問測試選項卡。如果rails服務器沒有運行,它會抱怨rails應用程序沒有運行,所以我必須從rails應用程序做'rails server',然後我可以通過在瀏覽器中打開各種url來運行sproutcore應用程序測試,例如http://localhost:4020/sproutcore/tests#myapp&test=unit/login_controller如何測試沒有瀏覽器的sproutcore應用程序

我的問題是:如何在不使用瀏覽器的情況下執行測試?我可以使用什麼命令來運行這些測試並在命令行上獲取輸出?

回答

0

安裝https://github.com/ariya/phantomjsphantomjs 那麼你就可以同時啓動的sproutcre應用程序和Rails應用程序

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.failed選擇器中發生任何失敗的測試。我還沒有計算失敗的測試;這個腳本只是檢測是否有失敗。它不是完全萬無一失,但它符合我的目的。沒有超時或任何事情,可能是應該添加的。但我們可以依靠它。

探索了sproutcore phantomjs的腳本,但它對我無效。任何想法爲什麼?

相關問題