【发布时间】:2022-01-28 03:23:40
【问题描述】:
我有一个包含一堆 Lambda 函数和层的 SAM 应用程序,使用 Mocha/Chai 对各个函数运行单元测试。
问题是,我也在使用层来共享本地模块。
SAM项目结构是这样的..
函数/
- 功能一/
- app.js
- package.json
- 功能二/
- app.js
- package.json
层/
- 第一层/
- moduleA.js
- moduleB.js
- package.json
- 第二层/
- moduleC.js
- package.json
一旦函数和层被部署,根据AWS,到require一个本地层从你使用这个路径的函数...
const moduleA = require('/opt/nodejs/moduleA');
但是,作为单元测试在本地运行不会解决任何问题。
关于在运行单元测试时如何解析层模块的路径有什么想法吗?
我可以设置一个 ENV 变量,然后基于它设置层的基本路径,但我想知道是否有更优雅的解决方案我错过了......
有没有办法在运行 Mocha 时给路径起别名?
其他选项是使用SAM INVOKE,但这会产生大量开销并且需要更多集成测试...
【问题讨论】:
-
您能否添加您的
function-one/package.json的代码...我过去所做的是在dependencies部分添加类似"moduleA": "file:../packages/layer/moduleA"的内容,然后在您的代码中只需要不需要路径:const moduleA = require("moduleA")
标签: node.js amazon-web-services npm mocha.js aws-sam