如何使用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;
}}
首先。接受单元测试的目的。它用于测试代码的单个单元。在这种情况下,我不会真正关心持久性。由于您实际上正在测试的代码可能会更进一步。因此,请记住这一点-让我们模拟持久层,以便可以在其他地方使用它。
让TableStorageRepository实现接口。
m guessing you don
用法例如:
ITableStorageRepository {
TableStorageRepository (IConfiguratin configuration);
Task<List<T>> GetEntitiesAsync (TableQuery<T> query);
}
您在这里的断言