尝试使用 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 解决方案。
避免使用
export { sum }
并将以下代码添加到一个单独的文件中,该文件除了使 GAS 忽略您的 module.exports = sum
语句外不执行任何操作。
var exports = exports || {};
var module = module || { exports: exports };
Object.defineProperty(exports, '__esModule', { value: true });
这应该让您的开发环境和 GAS 环境都满意。