微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

模拟 Azure BlobItem - C# 单元测试

如何解决模拟 Azure BlobItem - C# 单元测试

我有一些单元测试,我想模拟 Azure BlobItem 类 (Azure.Storage.Blobs.Models)。

这是我正在使用的测试类。我希望 Values getter 返回一个带有模拟 BlobItem 的列表。这是有效的。

public class TestPage : Page<BlobItem>
{
    public override IReadOnlyList<BlobItem> Values
    {
        get
        {
            return new List<BlobItem>() { new Mock<BlobItem>().Object };
        }
    }

    public override string ContinuationToken => throw new NotImplementedException();

    public override Response GetRawResponse()
    {
        throw new NotImplementedException();
    }
}

但是,当我这样做时,我的模拟 BlobItem 上的 Name 属性始终为空。

我可以尝试设置它,以便 Name 返回一个模拟值,如下所示:

var mock = new Mock<BlobItem>();
mock.SetupGet(x => x.Name).Returns("mock");

但是我得到一个错误

Non-overridable members may not be used in setup/verification expressions.

我明白为什么会发生这个错误。但我不知道解决方案是什么。

我想要一个模拟的 BlobItem 返回一个非空的 Name 值。我怎样才能做到这一点?

解决方法

显然有一个名为 BlobsModelFactory 的工厂类。

您可以通过调用以下任何名称来模拟 BlobItem:

var blob = BlobsModelFactory.BlobItem("mocked.mocked.mocked.mocked")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。