c# - 如何使用 Moq 在 C# 中模拟 Azure 存储帐户?

标签 c# .net azure rest

我有一个服务IBlobService:

public interface IBlobService
{
    public Task<BlobInfo> GetBlobAsync(string name);
    public Task<IEnumerable<string>> ListBlobsAsync();
    public Task UploadFileBlobAsync(string filePath, string fileName);
    public Task UploadContentBlobAsync(string content, string fileName);
    public Task DeleteBlobAsync(string blobName);
}

以下是我的 BlobService 类中 GetBlobAsync 方法的实现:

public async Task<BlobInfo> GetBlobAsync(string name)
{
    var client = _blobContainerClient.GetBlobClient(name);
    var blobDownloadInfo = await client.DownloadContentAsync();
    return new BlobInfo(blobDownloadInfo.Value.Content, blobDownloadInfo.Value.Details.ContentType);
}

我正在尝试弄清楚如何使用 Moq 来实现我的测试。我对起订量比较陌生。有什么想法或指导吗?

我曾尝试查看此博客https://devblogs.microsoft.com/azure-sdk/unit-testing-and-mocking/

但我仍然发现自己陷入困境。我正在尝试找出实现测试的最佳方法。

最佳答案

如果您想使用IblobService 进行单元测试来测试 blobservice 或类?

如果它是使用您的 IBlobService 的类,那么您需要模拟 IBlobService

像这样


...
public void Test1() {
   var blobServiceMocked = new Mock<IBlobService>();
   blobServiceMocked.Setup(e => e.GetBlobAsync(It.IsAny<string>()).Returns(new BlobInfo(){ ... }); 
blobServiceMocked.Object;
... 

// assert
  _methodThatTakesIBlobservice(blobServiceMocked.Object);
...

关于c# - 如何使用 Moq 在 C# 中模拟 Azure 存储帐户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74658579/

相关文章:

.net - 为什么不能在 C# 中对字典对象进行 XmlSerialized?

c# - 将来自同一基类的不同子类放入列表 C#

angular - 每个分支的 Azure Devops azure-pipelines.yml

c# - 如何将动态值传递给EventHub属性Azure函数c#

c# - StackExchange.Redis | TTL -2 |问题

c# - 尝试编译调用 native 代码的类时,Mono 编译器崩溃

c# - 使用HttpClient.GetFromJsonAsync(),如何处理基于HttpStatusCode的HttpRequestException而无需额外的SendAsync调用?

.net - 如何使用流畅的 API 添加主键 - Entity Framework EF 4.x Code First

c# - ExecuteNonQuery() 不返回 C# 和 SQL Server 数据库中受影响的行

c# - 如何使折线图中的数据点可见?