如何单元测试谷歌应用程序脚本?

Sam*_*eph 34 unit-testing google-apps-script

我正在尝试设置谷歌应用程序脚本的单元测试,我发现了两个项目:

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

所以我很困惑使用哪个:-)

我刚接触了unhyphenated gasunit,似乎期望脚本嵌入在电子表格中,我对如何做有点不清楚......我要测试的脚本是基于Web的脚本而不是电子表格那些

我有更多的运气测试连字符气体单元,它设法向我发送测试的电子邮件输出并在我的谷歌网站生成结果页面:

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

所以我现在打算加油机,但我真的很想看到一些由谷歌合并的官方测试框架.特别是我想找到一些方法让这些脚本以某种频率运行,以便向我发送结果.我也很想得到一些BDD; 看到我的其他帖子:

如何让Cucumber/Capybara/Mechanize对抗外部非rails网站 如何使用capybara has_text

来吧谷歌,你所有的浴室都有"测试岩石,调试糟透了"吗?如何更好地测试对Google Apps脚本的支持?

ada*_*dam 17

您可以尝试使用QUnit for Google Apps Script.这是一个补丁,QUnit变成了一个带有API文档的Google Apps脚本库.

您所需要的只是一个脚本项目,它导入一个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);
  });
}
Run Code Online (Sandbox Code Playgroud)

然后授权脚本,保存脚本版本,发布脚本项目("部署为Web应用程序")并使用浏览器转到测试URL("最新代码").您的测试将运行,结果将通过HtmlService显示.您可以单击它们来查看它们的断言,但是在写这篇文章时,由于Caja问题1688,您可能无法在Firefox 20和21中这样做.

  • 我发现QUnit是这里列出的最佳选择。这是另一个教程:http://www.tothenew.com/blog/how-to-test-google-apps-script-using-qunit/我想让jasmine / rajah正常工作,但是天然气依赖存在一些问题-控制台在GAS环境中不再起作用。 (3认同)

Hua*_*uan 8

我刚为我的谷歌电子表格插件开发和测试编写了另一个名为GasT的测试框架.

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()
}
Run Code Online (Sandbox Code Playgroud)

希望有人会喜欢它.:)

有一个在线版本,您可以在这里查看:https://docs.google.com/spreadsheets/d/19M2DY3hunU6tDQFX5buJmZ_f3E8VFmlqAtodyC-J8Ag/edit#gid=0&vpid=A1

GasT  -  Google Apps脚本测试框架,兼容测试任何协议


Tim*_*ast 5

clasp工具提供了从命令行本地开发和部署Apps Script项目的功能。

clasp仓库中

  1. npm install -g @google/clasp
  2. 启用Apps脚本API:https : //script.google.com/home/usersettings
  3. 在本地进行开发并使用该clasp工具进行部署。

编辑node-google-apps-script项目已不赞成使用clasp

有一个node-google-apps-script软件包,可以使用标准JavaScript软件包和自动测试工具。

  1. npm install -g node-google-apps-script
  2. 完成授权步骤以提供客户端机密,以允许上载和导入Apps Script项目。
  3. 使用gulpgrunt或任何其他方式测试运行正常的JavaScript项目。

有一个正式的Google示例可使用此工作流程。

有关更多详细信息,请参见Google Apps开发人员博客发布公告

下载文件后,通过将其重命名为.ts而不是,将它们转换为TypeScript .js。一旦它们是TypeScript,ava就可以用来对其进行测试。将它们转换为TypeScript还可以让他们使用ES6语言功能。

  • 扣不让你测试。 (2认同)
  • 如果你使用clasp,你可以在本地使用Jasmine/Mocha进行测试,因为你的文件是用JS编写的,然后用“clasp push”翻译成GAS。OAuth2 Apps 脚本库使用 Mocha 进行测试:https://github.com/gsuitedevs/apps-script-oauth2 (2认同)