Как подделать хранилище таблиц Azure в .NET для модульного тестирования?

Я работаю над системой, использующей хранилище таблиц Azure. В других системах (например, SQL, File based и т.д.) Я могу написать фальшивку, которая позволяет мне проверять логику сохранения данных. Тем не менее, я не вижу простого способа создать подделку для Azure Table Service.

Я мог бы создать новый проект IIS, который ведет себя одинаково, но это не очень хороший способ написать unit test, это скорее интеграционный тест.

Любые мысли о том, как unit test код доступа к данным, использующий клиент хранилища таблиц Azure?

Спасибо, Эрик

Ответы

Ответ 1

Это то, что я сейчас рассматриваю, но я еще не пробовал.

TableServiceContext выводит из DataServiceContext, поэтому я полагаю, что если вы можете ввести TableServiceContext в качестве DataServiceContext, вы можете смоделировать хранилище таблиц с помощью служб данных.

Сделав еще один шаг, если вы используете Entity Framework "Code First" для создания своей модели Entity Model, вы можете просто использовать созданные вами объекты таблиц, которые вы уже создали в качестве поддерживающих объектов для службы данных, и все должно работать плавно.

Это, по крайней мере, теория. Я никогда не пробовал.

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

Ответ 2

Я использую встроенную память ICloudTableStorage, которую вы можете передать, например, на ReliableCloudTableRepository.

Код можно найти здесь: https://gist.github.com/4078750

Ответ 3

Я знаю, что здесь есть несколько решений, но вот тот, который я придумал:

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

Это только решение, когда вы запрашиваете объекты с помощью CloudTableQuery<T>, но это очень помогло мне. Если вы пытаетесь получить более полную реализацию, вы также можете создать прокладку для DataServiceContext.SaveChanges(), которая может получить вам часть обновления.

Ответ 4

Я рассматривал это больше для тестирования интеграции, но я полагаю, что он также может работать для модульного тестирования. Встречайте Azure Storage Emulator. Это звучит как очень замечательный инструмент для тестирования Azure Blob, Queue и Table Services. Я играю с ним и стараюсь опубликовать свои результаты, если не запомню этого.