2013-03-28 19 views
19

Próbuję aby skonfigurować za pomocą testów jednostkowych skryptów aplikacji Google i znalazłem dwa projekty:jak testować skrypty aplikacji Google?

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

więc jestem zdezorientowany, które w użyciu :-)

Po prostu skorzystałem z nieskrytej jednostki gazowej, która wydaje się oczekiwać, że skrypt jest osadzony w arkuszu kalkulacyjnym, co do którego mam trochę wątpliwości ... a skrypty, które chcę przetestować, to skrypty oparte na Internecie zamiast na arkuszu kalkulacyjnym one

Ja ha d więcej szczęścia badania dzielone gazowe urządzenia, które udało się wysłać mi e-mail zarówno wyjście z testu i wygenerować stronę wyników w mojej witrynie Google:

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

więc mam zamiar się gaz w tej chwili, ale naprawdę chciałbym zobaczyć oficjalne ramy testowe włączone przez Google. W szczególności chciałbym znaleźć jakiś sposób, aby uruchomić te skrypty z pewną częstotliwością, aby wysłać mi wyniki. Poza tym chciałbym trochę popracować z BDD; zobacz inne moje posty:

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

Chodź Google, pokazowo mieć "Testowanie Rocks, debugowanie Sucks" we wszystkich łazienkach? A może lepiej przetestować obsługę skryptów Google Apps?

Odpowiedz

13

Możesz wypróbować QUnit for Google Apps Script. Jest to patch dla QUnit przekształcona w bibliotekę Google Apps Script z API docs.

Wszystko czego potrzebujesz to projekt skryptu, który importuje bibliotekę QUnit (na przykład tę z kluczem projektu MxL38OxqIK-B73jyDTvCe-OBao7QLBR4j) i ma funkcję doGet, która konfiguruje QUnit za pomocą parametrów URL i opcjonalnie również z własnymi ustawieniami, ładuje funkcję, która uruchamia twoje testy, a na końcu zwraca QUnit.getHtml(). Oto przykład:

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); 
    }); 
} 

Następnie autoryzować skrypt zapisz wersję tego, publikuje projekt skryptu („Instaluj jako aplikację internetową”) i przejdź do adresu URL testu („ostatnie kodem”) za pomocą przeglądarki . Twoje testy zostaną uruchomione, a wyniki będą wyświetlane za pośrednictwem HtmlService. Możesz je kliknąć, aby zobaczyć ich twierdzenia, ale w chwili pisania tego, prawdopodobnie nie będziesz w stanie tego zrobić w Firefoksie 20 i 21 z powodu Caja issue 1688.

+1

Świetne instrukcje tutaj, w części "Przykład użycia": https://github.com/simula-innovation/qunit/tree/gas/gas – mooreds

+0

Należy pamiętać, że jeśli wdrażasz aplikację internetową za pomocą skryptu aplikacji Google, będziesz musiał przełączaj nazwy funkcji doGet w przód iw tył. – mooreds

2

Stworzyłem jednostkę gazową (https://code.google.com/p/gas-unit/) i przez ostatnie kilka dni poświęciłem trochę czasu na uporządkowanie przykładów i dodanie testera kodu HTML.

Używam go sam dla niektórych manipulacji arkuszami kalkulacyjnymi, które robiłem z rozsądnym sukcesem. Używam również Jasmine do pracy po stronie klienta spoza GAS i naprawdę mi się to podobało. Tęsknię za zdolnością w jednostce gazowej do łatwego tworzenia spysów i preferuję styl specyfikacji BDD.

Urządzenie gazowe było dla mnie świetnym ćwiczeniem i działa, chociaż mogą istnieć nieodkryte problemy z zakresem i zamknięciem - to moje pierwsze znaczące ćwiczenie js poza manipulacją DOM.

Myślę, że przyszłość testowania w GAZ musi być z portem QUnit (zgodnie z sugestią Adama) lub Jasmine.Szybko rzuciłem okiem na to, czego potrzebowałam do przeniesienia Jasmine, ale jak dotąd nie udało mi się znaleźć czasu, by się z tym uporać.

+0

Przeprowadziłem moje testy z jednostki gazowej do QUnit na GAS tego wieczoru, który był stosunkowo bezbolesny i już dostaję korzyści z dodatkowych funkcji QUnit. Dzięki Adamowi i innym współpracownikom. Również znalazłem ten biegacz jaśminu [link] (https://github.com/tyskdm/rajah), który wydaje się działać, ale jest prawdopodobnie bardziej eksperymentalny, ale do obejrzenia. –

+0

@adam Zobacz podniesiony przeze mnie problem z niemożnością użycia debuggera [tutaj] (https://github.com/simula-innovation/qunit/issues/2) –

4

Właśnie napisałem kolejną platformę testową o nazwie GasT dla mojego rozwoju rozszerzenia arkusza kalkulacyjnego google &.

GasT to framework testowy zgodny z TAP dla Google Apps Script. Zapewnia prosty sposób sprawdzenia, czy programy GAS, które piszesz, zachowują się zgodnie z oczekiwaniami. https://github.com/zixia/gast

Moim celem jest uzyskanie prostego narzędzia takiego jak taśma (dla javascript) lub nietoperzy (dla basha). format pakietu testów jest dość jasny:

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() 
} 

Mam nadzieję, że komuś się spodoba. :)

istnieje wersja on-line, można przejść do obejrzenia na nim tutaj: 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

To narzędzie jest bardzo przejrzyste, lekkie i proste. Chłodny! – oshliaer

1

Obecnie pakiet node-google-apps-script aby umożliwić użyciu standardowych pakietów JavaScript i automatycznego testowania narzędzi.

  1. npm install -g node-google-apps-script.
  2. Przejdź przez stronę authorization steps, aby podać tajemnice klienta, aby umożliwić przesyłanie i importowanie projektów Apps Script.
  3. Użyj gulp lub grunt lub cokolwiek używasz do testowania normalnych projektów JavaScript.

Dostępny jest official Google sample, który używa tego przepływu pracy.

Aby uzyskać więcej informacji, zobacz artykuł Google Apps Developer Blog post announcement.