我需要一些为 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/