如何单元测试谷歌Apps脚本?(how to unit test google apps scrip

2019-08-18 02:35发布

我试图让建立与单元测试谷歌应用程序的脚本,我发现了两个项目:

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

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

我曾与unhyphenated gasunit,这似乎想到的是,脚本被嵌入一个电子表格,其中我对如何做一个有点不清楚......我想测试脚本去是基于网页脚本,而不是电子表格那些

我有更多的运气测试复姓气单位,设法送我两个测试的电子邮件输出,并产生一个结果页面在我的谷歌的网站:

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

所以我打算用气单位的时刻,但我真的很想看到谷歌加入了一些官方的测试框架。 我特别想找到一些办法让这些脚本来以一定的频率下运行,以给我的结果。 此外,我很想得到一些BDD去; 看到我的其他职位:

如何获得黄瓜/水豚/机械化抵御外界非轨现场工作 如何使用水豚has_text

来吧谷歌,你有一句名言“测试岩石,调试吸”在所有的浴室? 怎么样在谷歌Apps脚本更好的测试支持?

Answer 1:

您可以尝试QUnit对谷歌Apps脚本 。 这是一个补丁用于QUnit变成了谷歌Apps脚本库的API文档 。

所有你需要的是导入一个QUnit库(例如一个与该项目关键脚本项目MxL38OxqIK-B73jyDTvCe-OBao7QLBR4j ),并具有使用URL参数,也可选用你自己的设置配置QUnit一个的doGet功能,加载功能运行你的测试,最后返回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显示。 它们可以单点击查看他们的主张,但写这篇文章,你可能无法在Firefox 20和21这样做由于卡哈问题1688 。



Answer 2:

我只写了一个名为胃石为我的谷歌电子表格插件开发和测试其他测试框架。

加斯特是谷歌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



Answer 3:

clasp工具提供了开发和命令行本地部署Google Apps脚本项目的能力。

clasp回购 :

  1. npm install -g @google/clasp
  2. 使Google Apps脚本API: https://script.google.com/home/usersettings
  3. 本地开发和使用clasp工具来部署。

编辑 node-google-apps-script项目已被弃用,取而代之的clasp

还有就是节点谷歌-应用程序-脚本包允许使用标准的JavaScript包和自动化测试工具。

  1. npm install -g node-google-apps-script
  2. 通过去授权的步骤 ,以提供客户端机密,允许上传和导入Apps脚本项目。
  3. 使用gulpgrunt或者你使用的测试运行正常的JavaScript项目。

有一个谷歌官方的样本可使用此工作流程。

见谷歌Apps开发人员博客后公布更多的细节。

一旦文件被下载,通过重命名他们结束其转换为打字稿.ts ,而不是.js 。 一旦他们是打字稿, ava可以用来测试它们。 将它们转换为打字稿也可以让一个使用ES6语言功能。



Answer 4:

我创建了气单元( https://code.google.com/p/gas-unit/ ),并花了一点时间,在过去的几天整理的例子并添加HTML测试运行。

我一直在使用它自己的一些电子表格操作我一直在做取得了一定成功。 我也一直在使用茉莉花非GAS客户端JS工作,真的很喜欢这一点。 我怀念在气体单元的能力,能够轻松地创建spys我赞成规范书写的BDD风格。

气体单元一直是很好的学习锻炼,我和它的工作,虽然可能有范围和封闭未被发现的问题 - 这是DOM操作超出了我的第一个显著的js锻炼。

我想未来在试气必须与QUnit的端口(如亚当建议)或茉莉花。 我有一个快速浏览一下怎样才能到港茉莉花但至今一直没能找到对付它的时候。



Answer 5:

在谷歌脚本单元测试扔进混合另一个库是GSUnit 。

项目重点:MIUhnnCDES0N3YHPEWX9DUtkh30YExdAc

GSUnit是基于JUnit是由Kent Beck和JSUnit的爱德华Hieatt谷歌的企业应用套件基于脚本的测试框架



文章来源: how to unit test google apps scripts?