使用 QUnit 测试 Google Apps Script 网络应用程序

Testing Google Apps Script web app with QUnit

我有一个 Google Apps Script 网络应用程序,它以前可以运行,但是当我尝试向 "server-side" 添加一些代码时,它破坏了该应用程序。我希望返回并在此应用程序的不同功能和模块上进行一些单元测试,并可能进行一些回归测试(即使我的手动回归测试刚刚失败)。

我偶然发现了 this library for GAS unit testing and a 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. 我该如何解决这个问题以便我可以在项目中进行单元测试,以及 运行 它作为网络应用程序?

我不知道,当我添加库时,我必须 re-authorize 代码。这是通过 运行 函数完成的,单击带有 "Authorize" 等文本的按钮,然后按照弹出提示授权应用程序。 (要是我知道如何验证这个应用就好了,但那是另一个问题了...)

查看 QUnitGS2 - 使用最新版本 QUnit (v2.10.1) 的新 Apps 脚本库。

有关如何通过使用查询字符串创建您自己的路由器来 运行 与现有网络应用一起进行测试的说明。