【发布时间】:2017-09-01 20:37:36
【问题描述】:
什么是集成测试使用 ASB 的系统的合适方法?使用 Kafka 之类的东西并使用 docker-compose,我可以启动两个通过 Kafka 进行异步通信的服务。有没有办法用 ASB 做类似的事情?如果不是,常见的集成测试模式是什么?
【问题讨论】:
标签: azure docker-compose integration-testing azureservicebus
什么是集成测试使用 ASB 的系统的合适方法?使用 Kafka 之类的东西并使用 docker-compose,我可以启动两个通过 Kafka 进行异步通信的服务。有没有办法用 ASB 做类似的事情?如果不是,常见的集成测试模式是什么?
【问题讨论】:
标签: azure docker-compose integration-testing azureservicebus
Service Bus 的定价模型为12.5 million operations per month included for free。除此之外,每发送数百万条消息不到一美元。使用这些类型的服务,作为集成测试的一部分,您应该可以轻松地以绝对零成本启动和拆除实例。
例如,NUnit 提供了 [OneTimeSetup] 和 [OneTimeTearDown] 方法,您可以将它们用作集成测试套件的一部分,以提供并随后删除服务总线实例。
【讨论】:
遗憾的是,我认为Azure Storage Emulator 还不支持服务总线,但您可以将功能提取到接口中,然后编写一个假 ASB 并使用它,或者让接口使用模拟器中的队列。如果您想使用实际的 ASB 并且不介意产生成本,您可以使用名称的 guid 启动一个新的,或者如果创建临时队列或主题/订阅并使用名称的 guid,然后将其全部撕掉完成后放下。
也许并不理想,但它为您提供了一些选择。也许如果您分享更多关于您使用 ASB 的详细信息,我们可以提供更好的解决方案。
【讨论】:
在 docker hub 中有一个 Azure Storage Emulator Docker Image。使用时,请记住必须使用 Windows 仿真:
给定的图像可以在 docker compose 中使用:
version: '3.7'
services:
azure_sb:
container_name: azure_sb
image: microsoft/azure-storage-emulator
tty: true
restart: always
ports:
- "10000:10000"
- "10001:10001"
- "10002:10002"
对于测试或开发用途,考虑使用它的 Lightway 版本,即 Azurite link to doc
version: '3.7'
services:
azurite:
container_name: azurite
image: mcr.microsoft.com/azure-storage/azurite
tty: true
restart: always
ports:
- "10000:10000"
- "10001:10001"
【讨论】: