21

Azure 是否有类似于LocalStack for AWS 的模拟框架?请理解,我不是在寻找 SDK 模拟,而是资源堆栈模拟。

如此之多,以至于我可以用项目中的实际 Azure 资源替换本地 Azure 堆栈的配置,并且功能将保持不变。很像它与 Localstack 的工作方式。

我发现 Azure Cloud Fabric 最接近这一点,但它与 Visual Studio IDE 紧密结合。

4

2 回答 2

7

尽管 Azure 中没有等效的 LocalStack,但 Microsoft 发布了三个可以在本地运行的模拟器来帮助进行集成测试:

上述三个可以为您提供大量集成测试覆盖率,但是,由于 Azure Functions、AWS Lambda 和大多数现代 Web 堆栈甚至非无服务器都已转向使用服务,而不仅仅是使用软件模块,这是在集成之间实现完全对等的唯一方法测试和生产环境是自动创建和拆除真实的付费服务。

在 Azure 上进行端到端/集成测试的秘诀:

  • 使用Azure DevOps Piplines自动化整个 CI 流程
  • 使用 Azure 命令行工具向管道添加任务,以创建和拆除具有持久状态(数据库、文件存储等)的(真实)文本夹具资源。
  • 为测试应用程序提供对真实无状态服务(例如 Azure 认知服务等)的访问权限,就像您在生产环境中所做的那样。
  • 使用Azure 变量组来存储测试夹具资源的名称、连接字符串等。您可以将不同的集合存储在不同的组中,以便在 YAML 中为不同阶段轻松切换它们。这些变量也可以在它们自己的 YAML 文件中进行模板化。
  • 使用 Azure Functions Core Tools 模拟器在 CI 代理中托管和运行函数,而不是部署,并使用单元测试框架向它们提供请求。这些功能将使用作为测试装置的非模拟服务。
  • 或者为测试阶段创建一个部署,真正发布 API,然后编写 API 测试以发出原始 HTTP 请求,或者将其用作 Selenium Web 驱动程序测试 UI/前端的后端。

上述方法依赖于真实的服务来提供测试而不是模拟的服务,测试的东西非常接近你在生产中部署的东西。每次运行测试时都会产生使用费。如果这是一个问题,请首先在管道中使用单元测试和模拟器集成测试,并为此级别的测试添加人工检查/不同的管道,您只能在推送到生产之前执行该测试。

Azure Slots也可能值得一看。

于 2020-04-18T12:15:57.383 回答
3

现在https://github.com/azure/azurite还提供了一个 docker https://hub.docker.com/_/microsoft-azure-storage-azurite

于 2020-12-07T01:05:31.787 回答