如何在.NET中伪造Azure表存储以进行单元测试?

时间:2011-01-08 21:27:50

标签: unit-testing azure azure-storage azure-table-storage

我正在使用Azure表存储的系统。在其他系统(例如,SQL,基于文件等)中,我可以写一个假的,允许我测试我的数据持久性逻辑。但是,我看不到为Azure表服务创建虚假的简单方法。

我可以创建一个行为方式相同的新IIS项目,但这不是编写单元测试的好方法,它更像是一个集成测试。

有关如何对使用Azure表存储客户端的数据访问代码进行单元测试的想法吗?

4 个答案:

答案 0 :(得分:1)

我正在考虑更多用于集成测试,但我认为它也适用于单元测试。见Azure Storage Emulator。这听起来像是一个非常棒的测试Azure Blob,队列和表服务的工具。如果我记得这样做的话,我就可以试着发布我的发现。

答案 1 :(得分:0)

这是我目前正在考虑的事情,但我还没有尝试过。

TableServiceContext来自DataServiceContext,因此我想如果您可以将TableServiceContext注入DataServiceContext,则可以使用数据服务对Table Store建模。

更进一步,如果您使用实体框架“Code First”来创建您的实体模型 - 您可以使用您已经创建的表实体作为数据服务的支持实体,一切都应该顺利进行。

至少这是理论。我从未尝试过。

http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storageclient.tableservicecontext_members.aspx

答案 2 :(得分:0)

我使用ICloudTableStorage的内存实现,你可以将其传递给ReliableCloudTableRepository。

您可以在此处找到代码:https://gist.github.com/4078750

答案 3 :(得分:0)

我知道这里有几个解决方案,但这是我想出的那个:

http://azurator.blogspot.com/2013/07/unit-testing-azure-table-storage-queries.html

这只是使用CloudTableQuery<T>查询对象时的解决方案,但它对我帮助很大。如果您正在尝试获得更全面的实现,您还可以为DataServiceContext.SaveChanges()创建一个垫片,它可能会为您提供更新部分。