无服务器框架 - 获取 API 网关 URL 用于测试

Serverless Framework - Get API Gateway URL for use in tests

我正在使用无服务器框架,我希望能够在我的验收测试中引用我的 API 网关 URL。

我的测试环境会定期销毁然后重新创建,因此无法将 URL 硬编码到测试中。

我知道有一些方法可以 reference API Gateway as an AWS environment variable,但这并不能帮助我在本地获取 URL 用于我的测试。

我希望 .serverless 包中会引用 cloudformation 输出,并可通过 json 访问,但事实并非如此。

知道如何在我的验收测试文件中引用 API 网关 URL 吗?

注意:这些测试需要在 AWS 上进行 运行,而不是使用本地服务器来模仿 API 网关

考虑为您的 API 添加一个 API 网关自定义域。然后,您可以使用已知的 DNS 名称进行验收测试。

您需要将 ApiGateway 基本路径映射、apigateway 域名和 route53 记录集添加到 serverless.yml 的资源部分。

serverless-plugin-test-helper 插件可以提供帮助。它将生成一个 YAML 文件,其中包含堆栈的所有输出。这包括几个标准的 - 使用的 S3 存储桶 (ServerlessDeploymentBucketName) 和基本服务端点 (ServiceEndpoint)。

如果您使用的是 Node,并且您的测试与正在测试的堆栈位于同一目录中,那么还有一个模块可以读取此文件。否则,它只是标准的 YAML,您可以使用任何方便的工具。