Как unit test скриптов Google Apps?
Я пытаюсь настроить юнит-тесты для сценариев приложения Google и обнаружил два проекта:
https://code.google.com/p/gas-unit/ https://code.google.com/p/gasunit/
Так что я запутался, что использовать :-)
Я только что попробовал негазированный газоблок, который, кажется, ожидает, что скрипт встроен в электронную таблицу, что мне немного неясно, как это сделать... и скрипты, которые я хочу протестировать, являются веб-скриптами, а не электронной таблицей те,
Мне повезло больше, когда я тестировал блок с переносом газа, и мне удалось отправить мне результаты теста по электронной почте и сгенерировать страницу результатов на моем сайте Google:
https://sites.google.com/site/testappscript2/TestResults
так что сейчас я собираюсь поговорить с газовой установкой, но мне бы очень хотелось, чтобы какая-то официальная среда тестирования была включена Google. В частности, я хотел бы найти способ заставить эти скрипты запускаться с определенной частотой, чтобы посылать мне результаты. Также я хотел бы получить немного BDD; посмотрите мои другие сообщения:
Как заставить Cucumber/Capybara/Mechanize работать против внешнего сайта, не связанного с рельсами, как использовать capybara has_text
Заходите в Google, у вас классно есть "Тестирование скал, отладка отстой" во всех ваших ванных комнатах? Как насчет лучшей поддержки тестирования для скриптов Google Apps?
Ответы
Ответ 1
Вы можете попробовать QUnit для Google Apps Script. Это патч для QUnit превратился в Google Приложения Script с API docs.
Все, что вам нужно - это проект Script, который импортирует библиотеку QUnit (например, ту, которая имеет ключ проекта MxL38OxqIK-B73jyDTvCe-OBao7QLBR4j
), и имеет функцию doGet, которая настраивает QUnit с использованием параметров URL и, возможно, также с вашими собственными настройками, загружает функция, которая запускает ваши тесты, и, наконец, возвращает 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);
});
}
Затем авторизуйте script, сохраните его версию, опубликуйте проект Script ( "Развертывание как веб-приложение" ) и перейдите на тестовый URL ( "последний код" ) в свой браузер. Ваши тесты будут запущены, и результаты будут отображаться через HtmlService. Вы можете щелкнуть их по ним, чтобы увидеть их утверждения, но, как написано, вы, вероятно, не сможете это сделать в Firefox 20 и 21 из-за Caja выпуск 1688.
Ответ 2
Я только что написал еще одну среду тестирования под названием GasT для разработки и тестирования надстройки электронных таблиц Google.
GasT - это TAP-совместимая среда тестирования для Google Apps Script. Это обеспечивает простой способ проверить, что программы GAS, которые вы пишете, ведут себя как ожидалось. https://github.com/huan/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]()
Ответ 3
Инструмент clasp
предоставляет возможность разрабатывать и развертывать проекты Apps Script локально из командной строки.
Из репо с clasp
:
-
npm install -g @google/clasp
- включить API скриптов приложений: https://script.google.com/home/usersettings
- Разрабатывайте локально и используйте инструмент
clasp
для развертывания.
Отредактируйте node-google-apps-script
устарел в пользу clasp
Существует узел -g oogle-apps-script, позволяющий использовать стандартные пакеты JavaScript и инструменты автоматизированного тестирования.
-
npm install -g node-google-apps-script
. - Пройдите процедуру авторизации, чтобы предоставить клиентские секреты, позволяющие загружать и импортировать проекты скриптов Apps.
- Используйте
gulp
или grunt
или все, что вы используете для тестирования выполнения обычных проектов JavaScript.
Существует официальный образец Google, который использует этот рабочий процесс.
Подробнее см. В объявлении о публикации в блоге разработчиков приложений Google.
Как только файлы загружены, преобразуйте их в TypeScript, переименовав их в конец .ts
вместо .js
. Как только они написаны на TypeScript, ava
можно использовать для их проверки. Преобразование их в TypeScript также позволяет использовать возможности языка ES6.
Ответ 4
Я создал газовый блок (https://code.google.com/p/gas-unit/) и потратил немного времени в течение последних нескольких дней, убирая примеры и добавляя тестовый бегун HTML.
Я сам использовал его для некоторых манипуляций с электронными таблицами, которые я делал с разумным успехом. Я также использовал Jasmine для работы с js-сервером на стороне клиента, и мне это очень понравилось. Я пропускаю способность в газовом блоке, чтобы легко создавать шпионы, и я одобряю стиль написания спецификации BDD.
газовый блок был для меня отличным упражнением, и он работает, хотя могут быть неоткрытые проблемы с охватом и закрытием - это мое первое значительное упражнение js вне манипуляций с DOM.
Я думаю, что будущее для тестирования в GAS должно быть с портом QUnit (как предлагает Адам) или Жасмин. Я быстро посмотрел, что потребуется, чтобы порт Жасмин, но пока не смог найти время, чтобы заняться этим.
Ответ 5
GSUnit - еще одна библиотека для модульного тестирования в Google Scripts, которую можно добавить в миксы.
Ключ проекта: MIUhnnCDES0N3YHPEWX9DUtkh30YExdAc
GSUnit - это среда тестирования на основе Google Apps Script, основанная на JUnit Кента Бека и JSUnit Эдварда Хайетта