gpt4 book ai didi

Moq - 访问模拟对象的属性

转载 作者:行者123 更新时间:2023-12-04 15:59:52 24 4
gpt4 key购买 nike

例如:我有一个带有属性和方法的接口(interface)。该方法使用属性的值做一些事情。如何设置模拟以访问属性的值?

interface myInterface
{
Id{get;set;}
string ReturnIdAsString();
}

Mock<myInterface> mock = new Mock<myInterface>();
mock.Setup(m => m.Id).Returns(1);
mock.Setup(m => m.ReturnsIdAsString).Returns(**would like to return m.Id here**);

mock.Object.ReturnsIdAsString(); //should return the value in m.Id

如何设置 ReturnsIdAsString 以访问属性 ID?

最佳答案

您使用 SetupGet 获取属性。由于您正在模拟一个接口(interface),因此不会有任何底层实现,您也必须设置该方法。

Mock<myInterface> mock = new Mock<myInterface>(){CallBase = true};
mock.SetupGet(m => m.Id).Returns(1);
mock.Setup(m => m.ReturnsIdAsString()).Returns("1");

如果您打算更改 Id 属性的返回值,您也可以让该方法在返回时使用 lambda。

mock.Setup(m => m.ReturnsIdAsString()).Returns(() => mock.Object.Id.ToString());

请记住,即使您的类调用 m.Id = 42,它也不会更改属性的 Get,尽管您可以验证 Set.

mock.VerifySet(m => m.Id = 42);

关于Moq - 访问模拟对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4082486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com