2013-03-28 143 views
19

我試圖得到建立與單元測試谷歌應用程序的腳本,我發現了兩個項目:如何對谷歌應用腳​​本進行單元測試?

https://code.google.com/p/gas-unit/ https://code.google.com/p/gasunit/

所以我很困惑,這在:-)使用

我曾與unhyphenated gasunit,這似乎想到的是,腳本被嵌入一個電子表格,其中我對如何做一個有點不清楚......我想測試腳本去是基於網頁腳本,而不是電子表格那些

我公頃d更多的運氣測試複姓氣單位,設法送我兩個測試的電子郵件輸出,併產生一個結果頁面在我的谷歌網站:

https://sites.google.com/site/testappscript2/TestResults

所以我打算用氣單位,但我真的很希望看到谷歌合併的官方測試框架。特別是,我想找到一些方法讓這些腳本以某種頻率運行,並將結果發送給我。我也很想得到一些BDD,看到我的其他職位:

How to get Cucumber/Capybara/Mechanize to work against external non-rails site how to use capybara has_text

來吧谷歌,你有一句名言「測試岩石,調試吸」在所有的浴室?如何更好地測試對Google Apps腳本的支持?

回答

13

您可以嘗試QUnit for Google Apps Script。這是一個patchQUnit變成一個谷歌應用程序腳本庫API docs

所有你需要的是一個腳本項目,導入一個QUnit庫(例如具有項目關鍵字MxL38OxqIK-B73jyDTvCe-OBao7QLBR4j的腳本項目),並且有一個doGet函數,可以使用URL參數配置QUnit,也可以選擇使用自己的設置,運行你的測試,最後返回QUnit.getHtml()。這裏有一個例子:

function doGet(e) { 
    QUnit.urlParams(e.parameter); 
    QUnit.config({ title: "Unit tests for my project" }); 
    QUnit.load(myTests); 
    return QUnit.getHtml(); 
}; 

// Imports the following functions: 
// ok, equal, notEqual, deepEqual, notDeepEqual, strictEqual, 
// notStrictEqual, throws, module, test, asyncTest, expect 
QUnit.helpers(this); 

function myTests() { 
    module("dummy module"); 

    test("dummy test", 1, function() { 
    ok(true); 
    }); 
} 

然後腳本授權,保存版本的它,發佈腳本項目(「部署爲Web應用程序」),進入到測試URL(「最新的代碼」)用你的瀏覽器。您的測試將運行並且結果將通過HtmlService顯示。你可以單擊它們來查看它們的斷言,但是到寫這篇文章時,由於Caja issue 1688,你可能無法在Firefox 20和21中這樣做。

+1

這裏的很好的說明,在'使用示例'下:https://github.com/simula-innovation/qunit/tree/gas/gas – mooreds

+0

請注意,如果您通過谷歌應用程序腳本部署webapp,您將不得不來回切換doGet函數名稱。 – mooreds

2

我創建了氣體單元(https://code.google.com/p/gas-unit/),並在過去幾天花了一些時間整理示例並添加了一個HTML測試運行器。

我一直在使用它自己的一些電子表格操作我一直在做取得了一定成功。我也一直在使用Jasmine進行非GAS客戶端js工作,並且非常喜歡這一點。我錯過了燃氣設備的能力來輕鬆創建spys,並且我傾向於使用BDD的規範編寫風格。

氣體單元一直是很好的學習鍛鍊,我和它的工作,雖然可能有範圍和封閉未被發現的問題 - 這是DOM操作超出了我的第一個顯著的js鍛鍊。

我想將來用於氣體檢測必須與QUnit的端口(如亞當建議)或茉莉花。我快速瀏覽了茉莉花港口需要什麼,但還沒有找到時間來解決這個問題。

+0

今天晚上,我已經將我的測試從天然氣單元轉移到了QUNit,這是相對無痛的,我已經從QUnit的附加功能中受益。感謝Adam和其他貢獻者。還發現這個茉莉花運動員[鏈接](https://github.com/tyskdm/rajah)這似乎工作,但可能更實驗,但一個要看。 –

+0

@adam看到我提出的關於無法使用調試器的問題[這裏](https://github.com/simula-innovation/qunit/issues/2) –

4

我剛剛寫了另一個名爲GasT的測試框架,用於我的Google電子表格附加開發&測試。

GasT是Google Apps腳本的TAP兼容測試框架。它提供了一種簡單的方法來驗證您編寫的GAS程序的行爲如預期。 https://github.com/zixia/gast

我的目標是獲得像磁帶(用於javascript)或蝙蝠(用於bash)的簡單點擊工具。測試套件格式非常清晰:

var gastLibUrl = 'https://raw.githubusercontent.com/zixia/gast/master/src/gas-tap-lib.js' 
eval(UrlFetchApp.fetch(gastLibUrl).getContentText()) 

var test = GasTap.setPrintDriver('Logger') 

function gast() { 

    test('do calculation right', function (t) {  
    var i = 3 + 4 
    t.equal(i, 7, 'I can calc 3 + 4 = 7') 
    }) 

    test('Spreadsheet exist', function (t) { 
    var ss = SpreadsheetApp.openById('1TBJpvlW3WWney4rk1yW5N9bAP8dOMkWxI97dOtco-fc') 
    t.ok(ss, 'I can open spreadsheet') 
    }) 

    test.finish() 
} 

希望有人會喜歡它。 :)

有一個在線版本,你可以去這裏有它看看:https://docs.google.com/spreadsheets/d/19M2DY3hunU6tDQFX5buJmZ_f3E8VFmlqAtodyC-J8Ag/edit#gid=0&vpid=A1

GasT - Google Apps Script Testing-framework, Test Anything Protocol compatible

+0

這個工具非常透明,簡單明瞭。涼! – oshliaer