【问题标题】:Testing Google Apps Script web app with QUnit使用 QUnit 测试 Google Apps Script Web 应用程序
【发布时间】:2018-03-01 16:13:49
【问题描述】:

我有一个以前可以运行的 Google Apps Script 网络应用程序,但是当我尝试向“服务器端”添加一些代码时,它破坏了该应用程序。我希望回去做一些单元测试,可能还有一些回归测试(即使我的手动回归测试刚刚失败),对这个应用程序的不同功能和模块。

我偶然发现了this library for GAS unit testingtutorial 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") 时出现以下错误
  • 没关系。我想通了……

标签: google-apps-script qunit


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我不知道,当我添加库时,我必须重新授权代码。这是通过运行一个函数,单击带有“授权”之类的文本的按钮,然后按照弹出提示授权应用程序来完成的。 (要是我知道如何验证这个应用就好了,但这是另一个问题……)

    【讨论】:

      猜你喜欢
      • 2014-02-22
      • 1970-01-01
      • 2014-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多