如何在构建 GAS 过程期间剥离导出?需要在 Jest 的本地单元测试中使用导出

问题描述 投票:0回答:2

尝试使用 Jest 进行本地单元和集成测试。我已经有一些 npm 脚本来构建与 GAS 兼容的代码并使用 clasp 上传它,所以这不是问题。

问题看似简单,但我无法找出处理删除 Jest 需要工作的导出的最佳方法。

例如,假设我在我的 sum.js 文件中从一个超级简单的脚本开始:

function sum(a, b) {
  return a + b
}

如果我想向该函数添加测试,我添加

module.exports = sum
,这将生成一个像这样的 sum.js 文件:

function sum(a, b) {
  return a + b
}
module.exports = sum

然后在 sum.test.js 文件中编写我的测试,如下所示:

import { add } from "./index.js"

test('adds 1 + 2 to equal 3', () => {
  expect(add(1, 2)).toBe(3);
});

问题是

module.exports = sum
export { sum }
在 Google Apps 脚本中创建了一个异常(甚至不会用扣环上传),所以我只是想要一种简单的方法来在构建过程中删除所有导出,这不是一个超级 hacky 解决方案。

unit-testing testing google-apps-script jestjs automated-tests
2个回答
0
投票

我正在努力实现同样的目标,这是一个艰苦的旅程。不幸的是,玩笑是不行的。 目前,我正在 Node.js 中使用 QUnit 进行本地测试,并使用 GAS QUnit v2 库进行 Google 端测试。 要删除导出和导入语句,建议我查看带有插件的汇总,例如 thisgulp


0
投票

避免使用

export { sum }
并将以下代码添加到一个单独的文件中,该文件除了使 GAS 忽略您的
module.exports = sum
语句外不执行任何操作。

var exports = exports || {};
var module = module || { exports: exports };
Object.defineProperty(exports, '__esModule', { value: true });

这应该让您的开发环境和 GAS 环境都满意。

© www.soinside.com 2019 - 2024. All rights reserved.