对于这些场景,如何使用 Jest 为无服务器测试创建测试?
Posted
技术标签:
【中文标题】对于这些场景,如何使用 Jest 为无服务器测试创建测试?【英文标题】:How to create tests for serverless testing using Jest for these scenarios? 【发布时间】:2020-03-09 12:10:44 【问题描述】:我是无服务器和 NodeJS 的新手。请您指导我如何为
创建 自动 测试用例lambda 到 lambda 调用
到 Lambda 调用的 API 网关
DynamoDB 插入测试请帮忙。提前致谢。
【问题讨论】:
对于 DynamoDB 插入测试,您可以安装无服务器插件serverless-dynamodb-local
和 serverless-offline
以创建本地 DynamoDB 进行测试。
我想使用我已经使用无服务器离线完成的玩笑进行测试。我想写一个测试用例,其中一个 lambda 调用另一个 lambda,我得到预期的响应,我通过了单元测试
自动化测试就是我想要的
【参考方案1】:
如果您想要对 lambda 函数进行完整的端到端测试,则必须在函数本身之外进行处理。
如果您使用单元测试工具,您将能够在本地甚至函数内部运行它们,但您将无法实际查询函数并完成整个过程。
我将使用任何单元测试库(如 mocha)创建第二个 lambda 函数,并编写通过 API 网关使用简单的 http-request 包(如 request)调用第一个 lambda 函数的功能测试。
编辑:
以下是对您的每一点的更多说明:
1) Lambda 到 Lambda 调用
如果通过 lambda-to-lambda 表示您想在不使用 API GW 的情况下调用另一个函数,那么我猜您打算使用 AWS 开发工具包来触发一个函数。
如果是这样,它就像任何其他测试一样。您将创建一个测试函数,让 SDK 触发第二个 lambda,然后检查 SDK 函数的结果。它可能会指示它是否成功,甚至会给你结果。
2) lambda 调用的 API 网关
如果您想测试 API GW 和 lambda 之间的连接是否有效,我会说,何必呢?这是一种设置一次即用的交易。但如果您仍想对此进行测试,它将类似于第 1 项),不同之处在于您将使用 API 网关 URL 而不是使用 SDK .
所以你可以使用 npm 包(例如 axios 或 request)向这样的 URL 发出请求,看看内容是否符合预期。
我什至会说你可以在 lambda 函数中运行测试并调用相同的 lambda 函数,而无需创建单独的 lambda。
3) 发电机插入
这是最简单的,只需创建一个单元测试,将某些内容写入 dynamo。然后,为了知道测试是否通过,只需阅读数据库试图找到你写的内容。
如果您在测试库之间犹豫不决,我建议您选择 mocha 和 chai。
如果我可以帮助您回答更具体的问题,请告诉我。
【讨论】:
能详细点吗?以上是关于对于这些场景,如何使用 Jest 为无服务器测试创建测试?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Jest/Enzyme 在功能性 React 组件中测试 lambda 函数?
如何使用 jest 和酶测试 onClick() 函数和 useState 钩子