对于这些场景,如何使用 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-localserverless-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 重置单个模块

如何使用 jest 和酶测试 onClick() 函数和 useState 钩子

如何使用 Jest 测试导入/导出?

如何使用 Jest 对 quasar 应用程序进行单元测试?

如何在 Jest 的自定义测试环境文件中使用 TypeScript?