我正在开发一个使用 Azure 表存储的系统。在其他系统(例如,SQL、基于文件的等)中,我可以编写一个假的来测试我的数据持久性逻辑。但是,我看不到为 Azure 表服务创建假的简单方法。
我可以创建一个行为相同的新 IIS 项目,但这不是编写单元测试的好方法,它更像是一个集成测试。
有关如何对使用 Azure 表存储客户端的数据访问代码进行单元测试的任何想法?
我正在开发一个使用 Azure 表存储的系统。在其他系统(例如,SQL、基于文件的等)中,我可以编写一个假的来测试我的数据持久性逻辑。但是,我看不到为 Azure 表服务创建假的简单方法。
我可以创建一个行为相同的新 IIS 项目,但这不是编写单元测试的好方法,它更像是一个集成测试。
有关如何对使用 Azure 表存储客户端的数据访问代码进行单元测试的任何想法?
我更多地考虑将其用于集成测试,但我想它也可以用于单元测试。认识Azure 存储模拟器。这听起来像是一个用于测试 Azure Blob、队列和表服务的非常棒的工具。如果我记得这样做,我正在玩它并尝试发布我的发现。
我使用 ICloudTableStorage 的内存实现,您可以将其传递到例如 ReliableCloudTableRepository。
你可以在这里找到代码:https ://gist.github.com/4078750
我知道这里发布了几种解决方案,但这是我想出的一个:
http://azurator.blogspot.com/2013/07/unit-testing-azure-table-storage-queries.html
这只是当您使用 查询对象时的一种解决方案CloudTableQuery<T>
,但它对我帮助很大。如果您正在尝试获得更完整的实现,您还可以创建一个 shim 来DataServiceContext.SaveChanges()
获取更新部分。
这是我目前正在考虑的事情,但我还没有尝试过。
TableServiceContext 继承自 DataServiceContext,所以我想如果您可以将 TableServiceContext 作为 DataServiceContext 注入,您可以使用数据服务对表格存储进行建模。
更进一步,如果您使用实体框架“代码优先”来创建实体模型 - 您可以只使用您已经创建的表实体作为数据服务的支持实体,一切都应该顺利进行。
至少理论上是这样的。我从来没有尝试过。