具有存储库模式和xunit的Azure表存储c#

问题描述 投票:0回答:1

如何使用azure存储器实现存储库模式,它应该支持x单元测试和模拟对象?不幸的是,由于CloudStorageAccount和CloudTableClient无法模拟,我无法处理单元测试用例。

示例代码:-

public abstract class TableStorageRepository {
 private readonly IConfiguration _config;
 public CloudStorageAccount _cloudStorageAccount;
 public CloudTableClient _tableClient;
 protected CloudTable _table;

 public TableStorageRepository (IConfiguration configuration) {
     _config = configuration;
     _cloudStorageAccount = CloudStorageAccount.Parse ("key");
     _tableClient = _cloudStorageAccount.CreateCloudTableClient (new TableClientConfiguration ());
 }

 public async Task<List<T>> GetEntitiesAsync (TableQuery<T> query) {
     _table = _tableClient.GetTableReference("Tablename");
     await _table.CreateIfNotExistsAsync ();
     TableContinuationToken token = null;
     var entities = new List<T> ();
     do {
         var queryResult = await _table.ExecuteQuerySegmentedAsync (query, token);
         entities.AddRange (queryResult.Results);
         token = queryResult.ContinuationToken;
     } while (token != null);

     return entities;
 }}
c# azure xunit
1个回答
0
投票

首先。接受单元测试的目的。它用于测试代码的单个单元。在这种情况下,我不会真正关心持久性。由于您实际上正在测试的代码可能会更进一步。因此,请记住这一点-让我们模拟持久层,以便可以在其他地方使用它。

让TableStorageRepository实现接口。

m guessing you don

用法例如:

ITableStorageRepository {
TableStorageRepository (IConfiguratin configuration);
Task<List<T>> GetEntitiesAsync (TableQuery<T> query);
}

您在这里的断言

© www.soinside.com 2019 - 2024. All rights reserved.