使用 Docker 集成测试 Azure 服务总线

Integration testing Azure Service Bus with Docker

集成使用 ASB 的测试系统的合适方法是什么?使用 Kafka 之类的东西并使用 docker-compose,我可以启动两个将通过 Kafka 异步通信的服务。有没有办法用 ASB 做类似的事情?如果不是,常见的集成测试模式是什么?

Service Bus 的定价模型有 12.5 million operations per month included for free。除此之外,每发送数百万条消息的费用还不到一美元。有了这些类型的服务,作为集成测试的一部分,您应该可以轻松地以绝对零成本启动和拆除实例。

例如,

NUnit 提供了 [OneTimeSetup][OneTimeTearDown] 方法,您可以将它们用作集成测试套件的一部分来提供并随后删除服务总线实例。

遗憾的是,我认为 Azure Storage Emulator 还不支持服务总线,但您可以将功能提取到接口中,然后编写一个伪造的 ASB 并使用它,或者让接口在模拟器。如果您想使用实际的 ASB 并且不介意产生成本,您可以启动一个带有名称 guid 的新 ASB,或者如果创建渐逝队列或 topics/subscriptions 以及名称的 guid,然后撕裂完成后全部关闭。

也许不理想,但它为您提供了一些选择。或许,如果您分享更多有关您使用 ASB 的目的的详细信息,我们可以提供更好的解决方案。

docker 中心有一个 Azure 存储模拟器 Docker 图像。使用的时候记得一定要用Windows emulation:

给定的图像可用于 docker 撰写:

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"