c# - 如何模拟Azure.Storage.Blobs的BlobContainerClient()?

标签 c# azure mocking azure-blob-storage

我需要一些为 Azure.Storage.Blobs 的 BlobContainerClient 创建 Mock 对象的示例以进行单元测试。如何为以下类(class)创建模拟?

 public sealed class BlobStorageProcessor
    {
        public BlobStorageProcessor(ILogger logger, BlobContainerClient containerClient)
        {
            this.logger = logger;
            this.containerClient = containerClient;
        }
    }

最佳答案

微软现已在博客文章中介绍了这一点:https://devblogs.microsoft.com/azure-sdk/unit-testing-and-mocking/

基本上,您使用 Moq包来创建模拟对象并设置 BlobStorageProcessor 将使用的方法/属性。

public static BlobContainerClient GetBlobContainerClientMock()
{
    var mock = new Mock<BlobContainerClient>();

    mock
        .Setup(i => i.AccountName)
        .Returns("Test account name");

    return mock.Object;
}

在单元测试中,您应该将 GetBlobContainerClientMock 方法的结果注入(inject)到 BlobStorageProcessor:

var blobStorageProcessor = new BlobStorageProcessor(
    GetLoggerMock(),
    GetBlobContainerClientMock()
);

GetLoggerMock 的实现方式与 GetBlobContainerClientMock 类似。在这里阅读更多信息:Moq Quickstart

关于c# - 如何模拟Azure.Storage.Blobs的BlobContainerClient()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64385008/

相关文章:

python - 模拟 Python 属性的函数

java - 为什么测试中的某些硬编码值会影响其他值?

c# - 将所选项目从 WPF ListView 保存到另一个变量

Azure Devops Powershell 任务 : Programmatic Access of Build Variables

c# - 将所有行复制到 Azure 表存储中的另一个表

azure - CDN - 根据 Accept header 提供不同的内容类型(Verizon/EdgeCast Premium)?

python - 无法模拟打开,即使使用文档中的示例也是如此

c# - 在 WPF 中使用数据绑定(bind)时 OxyPlot 不刷新

c# - 将整数传递给 VSTO 2010 Word 插件

c# - 如何在 asp.net 的代码后面按百分比设置 Table/TableRow/TableCell 宽度?