模拟 Azure BlobItem - C# 单元测试
Mocking Azure BlobItem - C# unit test
我有一些单元测试,我想在其中模拟 Azure BlobItem
class (Azure.Storage.Blobs.Models)。
这是我正在使用的测试 class。我想要 Values
getter 到 return 一个带有模拟 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
会 return 像这样的模拟值:
var mock = new Mock<BlobItem>();
mock.SetupGet(x => x.Name).Returns("mock");
但是我得到一个错误:
Non-overridable members may not be used in setup/verification expressions.
我明白为什么会出现这个错误。但是不知道怎么解决。
我想要一个模拟的 BlobItem return 一个非空的 Name
值。我怎样才能做到这一点?
显然有一家名为 BlobsModelFactory
的工厂 class。
您可以通过调用以下方式以您想要的任何名称模拟 BlobItem:
var blob = BlobsModelFactory.BlobItem("mocked.mocked.mocked.mocked")
我有一些单元测试,我想在其中模拟 Azure BlobItem
class (Azure.Storage.Blobs.Models)。
这是我正在使用的测试 class。我想要 Values
getter 到 return 一个带有模拟 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
会 return 像这样的模拟值:
var mock = new Mock<BlobItem>();
mock.SetupGet(x => x.Name).Returns("mock");
但是我得到一个错误:
Non-overridable members may not be used in setup/verification expressions.
我明白为什么会出现这个错误。但是不知道怎么解决。
我想要一个模拟的 BlobItem return 一个非空的 Name
值。我怎样才能做到这一点?
显然有一家名为 BlobsModelFactory
的工厂 class。
您可以通过调用以下方式以您想要的任何名称模拟 BlobItem:
var blob = BlobsModelFactory.BlobItem("mocked.mocked.mocked.mocked")