所以我的app堆栈在prod中看起来像这样:
我想使用https://www.cypress.io/进行端到端测试,我想将https://circleci.com/用于我的构建服务器。
如何创建允许端到端测试运行的环境?
选项:
1)每次运行端到端测试时,使用Terraform编写基础架构脚本并创建/拆除整个环境。这在旋转时间方面听起来像是一个巨大的开销。完全编写脚本的环境创建和设置听起来像是很多工作!
2)创建一个专门的,长期存在的环境,我们逐步部署。听起来它会变得混乱 - 不适合进行测试的地方。
3)使它成为我们可以在本地运行环境。所以也许使用AWS的SAM或像这个项目https://github.com/gertjvr/serverless-plugin-simulate
最后一个选项也可以回答本地开发环境设置的问题,但是在本地模拟无服务器技术的所有内容似乎都处于测试阶段,我担心如果我走这条路,我可能会在投入大量时间后遇到一些问题。 ...
您可以使用无服务器框架将您的应用程序编码为基础架构作为代码并创建测试
https://serverless.com https://serverless.com/framework/docs/providers/aws/guide/testing
“完全编写脚本的环境创建和设置听起来像很多工作” - 它确实如此。这也是正确的事情。它不仅允许您编写代码版本,还允许您运行代码的环境。自动化部署不仅仅是代码。我推荐这个。
就我而言,我将我的测试策略拆分如下:
Api: - 单元测试:(使用您喜欢的语言框架) - 集成测试:这取决于您的InfraAsCode选择,如果您使用SAM或无服务器框架,您将能够在本地直接向您的函数注入事件。如果要添加DynamoDB或S3交互等集成部分,则应考虑使用LocalStack(https://github.com/localstack/localstack)来模拟这些服务。
前面: - 对于那部分,我总是使用Stub模拟API请求并且仅测试前端部分(我之前已经测试过api部分)。然后你就可以使用柏树或其他框架了。