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

Ash*_*raf 14 c# mocking azure azure-blob-storage

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

 public sealed class BlobStorageProcessor
    {
        public BlobStorageProcessor(ILogger logger, BlobContainerClient containerClient)
        {
            this.logger = logger;
            this.containerClient = containerClient;
        }
    }
Run Code Online (Sandbox Code Playgroud)

小智 16

微软现已在博客文章中介绍了这一点: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;
}
Run Code Online (Sandbox Code Playgroud)

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

var blobStorageProcessor = new BlobStorageProcessor(
    GetLoggerMock(),
    GetBlobContainerClientMock()
);
Run Code Online (Sandbox Code Playgroud)

GetLoggerMock可以通过类似于GetBlobContainerClientMock. 在此处阅读更多信息:起订量快速入门

  • 我对您链接的 Microsoft 博客文章的问题是,它全部都是关于使用 C# 的,而没有提及在使用 Java 时要做什么...... (2认同)
  • @cptully 恕我直言,这不是答案或博客文章的问题。该问题专门针对 C# 而不是 Java。 (2认同)