如何在测试中获取在serverless.yml中定义的环境变量

bra*_*log 6 integration-testing node.js jestjs serverless-framework

我正在使用无服务器框架在AWS上运行lambda函数。

在我serverless.yml的环境中,有从SSM获取的环境变量。

当我为代码编写集成测试时,我需要代码具有环境变量,而我找不到找到此方法的好方法。

我不想为测试重复所有变量定义,它们已经在serverless.yml中定义。另外,有些是机密,我无法将其提交来源控制,因此我还必须在ci环境中重复这些秘密。

尝试使用,serverless-jest-plugin但无法正常运行,维护也不完善。

我对解决方案的想法:

  1. 使测试执行sls invoke-这将起作用,但将意味着无法调试代码,我不知道测试范围,并且测试速度很慢。
  2. 解析serverless.yml我自己并导出env变量-可能,但是重写仅用于测试的提取SSM变量的逻辑似乎是错误的。

有任何想法吗?

bra*_*log 6

我们最终使用的解决方案是一个名为serverless-export-env的无服务器插件。

添加此插件后,您可以运行serverless export-env将所有已解析的环境变量导出到.env文件中。这可以正确解析 ssm 参数并使我们的集成测试变得更加简单。

顺便说一句,要从.env文件中设置环境变量,请使用dotenv npm 包。

感谢grishezz寻找解决方案