Unit testing 如何对谷歌应用程序脚本进行单元测试?
我正在尝试为谷歌应用程序脚本设置单元测试,我发现了两个项目: 所以我不知道该用哪一个:-) 我刚刚尝试了一个未加苯的气体装置,它似乎期望脚本嵌入到电子表格中,我不太清楚如何做。。。我想测试的脚本是基于web的脚本,而不是电子表格脚本 我在测试连字符气体装置时运气更好,它成功地向我发送了测试的电子邮件输出,并在我的谷歌网站上生成了一个结果页面: 所以我现在要讨论gas单元,但我真的很想看到谷歌加入一些官方的测试框架。特别是,我想找到一些方法让这些脚本以一定的频率运行,以向我发送结果。此外,我也很想让一些BDD去;见我的其他帖子: 来吧,谷歌,你所有的浴室都有“测试石头,调试很糟糕”这句名言?如何更好地支持谷歌应用程序脚本的测试 你可以试试。这是一个用于转换为谷歌应用程序脚本库的工具 您所需要的只是一个脚本项目,它导入一个QUnit库(例如,一个具有项目键Unit testing 如何对谷歌应用程序脚本进行单元测试?,unit-testing,google-apps-script,Unit Testing,Google Apps Script,我正在尝试为谷歌应用程序脚本设置单元测试,我发现了两个项目: 所以我不知道该用哪一个:-) 我刚刚尝试了一个未加苯的气体装置,它似乎期望脚本嵌入到电子表格中,我不太清楚如何做。。。我想测试的脚本是基于web的脚本,而不是电子表格脚本 我在测试连字符气体装置时运气更好,它成功地向我发送了测试的电子邮件输出,并在我的谷歌网站上生成了一个结果页面: 所以我现在要讨论gas单元,但我真的很想看到谷歌加入一些官方的测试框架。特别是,我想找到一些方法让这些脚本以一定的频率运行,以向我发送结果。此外,我
MxL38OxqIK-B73jyDTvCe-OBao7QLBR4j
),并具有一个doGet函数,该函数使用URL参数配置QUnit,还可以使用您自己的设置,加载一个运行测试的函数,最后返回QUnit.getHtml()。以下是一个例子:
函数doGet(e){
QUnit.urlparms(e.parameter);
config({title:“我的项目的单元测试”});
质量负荷(myTests);
返回QUnit.getHtml();
};
//导入以下函数:
//好,相等,notEqual,deepEqual,notDeepEqual,严格相等,
//非严格相等、抛出、模块、测试、异步测试、预期
帮手(本);
函数myTests(){
模块(“虚拟模块”);
试验(“虚拟试验”,1,功能(){
好(对),;
});
}
然后授权脚本,保存脚本的版本,发布脚本项目(“部署为web应用”),并使用浏览器转到测试URL(“最新代码”)。您的测试将运行,结果将通过HtmlService显示。您可以单击它们来查看它们的断言,但在编写本文时,您可能无法在Firefox 20和21中执行此操作,因为。我创建了gas unit(),并在过去几天中花费了一些时间整理示例和添加HTML测试运行程序
我自己也在使用它进行一些电子表格操作,并取得了一定的成功。我也一直在使用Jasmine进行非GAS客户端js工作,并且非常喜欢。我怀念在气体部门轻松创建间谍的能力,我喜欢BDD风格的规范编写
gas单元对我来说是一个很好的学习练习,它确实有效,尽管在范围和闭包方面可能存在未发现的问题——这是我在DOM操作之外的第一个重要js练习
我认为未来的天然气测试必须有一个库尼特港(正如亚当所建议的)或茉莉花港。我快速浏览了一下port Jasmine需要做些什么,但还没有找到时间来解决它。我刚刚为我的google电子表格插件开发和测试编写了另一个名为GasT的测试框架 GasT是一个针对Google应用程序脚本的TAP兼容测试框架。它提供了一种简单的方法来验证您编写的GAS程序是否按预期运行 我的目标是获得一个简单的tap工具,比如磁带(用于javascript)或bats(用于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()
}
希望有人会喜欢。:)
有一个在线版本,您可以在此处查看:
提供了从命令行在本地开发和部署应用程序脚本项目的能力
从:
npm安装-g@google/clasp
clasp
工具进行部署节点
项目已被弃用,取而代之的是clasp
该软件包允许使用标准JavaScript软件包和自动测试工具
npm安装-g node谷歌应用程序脚本
gulp
或grunt
或用于测试运行正常JavaScript项目的任何东西下载文件后,将其重命名为
.ts
而不是.js
,将其转换为TypeScript。一旦它们是TypeScript,就可以使用ava
来测试它们。将它们转换为TypeScript还可以使用ES6语言特性。另一个在Google脚本中进行单元测试的库是
项目编号:MIUhnnCDES0N3YHPEWX9DUtkh30YExdAc
GSUnit是一个基于JUnit的GoogleApps脚本测试框架
作者:肯特·贝克和爱德华·希亚特
查看QUnitGS2-一个使用最新版本QUnit(v2.10.1)的新应用程序脚本库。今晚,我将气体测试从气体装置转移到QUnit,这相对来说比较轻松,我已经从QUnit的附加功能中受益。感谢Adam和其他贡献者。还发现了这个jasmine runner,它似乎很有效,但可能更具实验性,但值得注意。@adam看到了我提出的关于无法使用调试器的问题,这里的“示例使用”下有一个很好的说明:请注意,如果您是通过google apps脚本部署webapp,您必须前后切换doGet函数名。TypeError:无法从undefined中读取属性“all”。(第263行,文件“qunit.js”,项目“qunit”)我发现qunit是t