模拟 Azure 存储事务
Posted
技术标签:
【中文标题】模拟 Azure 存储事务【英文标题】:Mocking Azure Storage Transactions 【发布时间】:2013-01-03 20:56:21 【问题描述】:我正在寻找使用 Moles Mocking 框架模拟 azure 存储事务。
关于如何使用 Moles 或任何其他模拟框架模拟 azure 存储事务的任何想法/文档/示例?
【问题讨论】:
P.S.我已经通过Guidance on Efficiently Testing Azure Solutions 我建议在包装器中抽象所有对 azure storage 的调用并模拟它们。您将从存储中获得的大多数问题都与连接相关或限制。 【参考方案1】:虽然这不能直接回答问题,但作为替代解决方案,我使用开箱即用的模拟器,我相信它可以被视为 azure 存储的模拟。
这是我在单元测试基类中添加的用于启动存储模拟器的代码:
[TestInitialize]
public void setup()
Process.Start(@"C:\Program Files\Microsoft SDKs\Windows Azure\Emulator\csrun", "/devstore").WaitForExit();
【讨论】:
感谢乌祖尔!但是,我期待模拟实体/事务并避免使用存储模拟器。【参考方案2】:.NET 客户端的最新版本虚拟化了所有服务调用 API,并且还解封了相关类 - 这意味着模拟存储客户端库应该很简单。我相信测试是用最小起订量进行的。见:https://github.com/Azure/azure-storage-net/blob/master/BreakingChanges.txt
【讨论】:
【参考方案3】:您需要做的就是为要模拟的任何 azure 类创建一个接口,并将该接口作为依赖项而不是具体的 azure 类,因为产品代码从存储 sdk 传递具体类,仅用于您的单元测试使用任何单元测试框架(即 Moq)或仅使用您的接口的模拟实现,您就完成了。
【讨论】:
【参考方案4】:先决条件:下载 Microsoft Azure Sdk for .Net(包含存储模拟器) https://azure.microsoft.com/en-us/downloads/
您可以针对 Azure 存储模拟器运行您的代码。存储模拟器是在云中模拟 Azure 存储帐户的本地环境。模拟器是一个免费选项,用于在开发应用程序时测试和调试代码。模拟器使用众所周知的帐户和密钥。有关更多详细信息,请参阅使用 Azure 存储模拟器进行开发和测试
通过在web.config
中设置以下连接来连接到存储模拟器帐户
<appSettings>
<add key="StorageConnectionString" value="UseDevelopmentStorage=true" />
</appSettings>
这是我的开发存储模拟器的屏幕截图,这是 Blob 表等的模拟...
【讨论】:
以上是关于模拟 Azure 存储事务的主要内容,如果未能解决你的问题,请参考以下文章