Подтвердить что ты не робот

Как 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?

4b9b3361

Ответ 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:

  1. npm install -g @google/clasp
  2. включить API скриптов приложений: https://script.google.com/home/usersettings
  3. Разрабатывайте локально и используйте инструмент clasp для развертывания.

Отредактируйте node-google-apps-script устарел в пользу clasp

Существует узел -g oogle-apps-script, позволяющий использовать стандартные пакеты JavaScript и инструменты автоматизированного тестирования.

  1. npm install -g node-google-apps-script.
  2. Пройдите процедуру авторизации, чтобы предоставить клиентские секреты, позволяющие загружать и импортировать проекты скриптов Apps.
  3. Используйте 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 Эдварда Хайетта