【发布时间】:2018-03-01 16:13:49
【问题描述】:
我有一个以前可以运行的 Google Apps Script 网络应用程序,但是当我尝试向“服务器端”添加一些代码时,它破坏了该应用程序。我希望回去做一些单元测试,可能还有一些回归测试(即使我的手动回归测试刚刚失败),对这个应用程序的不同功能和模块。
我偶然发现了this library for GAS unit testing 和tutorial for using the library。问题是,要真正看到测试结果,您必须实现一个function doGet(e) 进行测试。
我正在尝试进行单元测试的这个应用程序,作为一个网络应用程序,已经具有该功能。其实现如下:
function doGet(e) {
return HtmlService.createTemplateFromFile(
'potholeMap'
).evaluate()
.setTitle('Pothole Map')
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
当我引入 QUnit 库依赖项并对其进行重构以允许 QUnit 测试时,如下所示:
function doGet(e) {
var TESTING = true;
if (TESTING)
{
QUnit.urlParams(e.parameter);
QUnit.load(function test() {});
return QUnit.getHtml();
}
return HtmlService.createTemplateFromFile(
'potholeMap'
).evaluate()
.setTitle('Pothole Map')
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
当我尝试运行它时出现此错误:Authorization is required to perform that action. 如何解决此问题以便我可以在项目中进行单元测试,以及将其作为 Web 应用程序运行?
【问题讨论】:
-
尝试从脚本窗口运行 doGet() 函数:运行 > 运行函数 > doGet。这应该会弹出一个窗口来授权您在脚本中使用的范围。
-
运行项目中的任何函数应该足以提示授权流程
-
在我使用
QUnit的行上尝试运行doGet():TypeError: Cannot read property "parameter" from undefined. (line 6, file "Code")时出现以下错误 -
没关系。我想通了……