如何Mock属性返回对象的方法并设置其返回值?
配置Mock对象使属性方法返回空集合
没问题,我来帮你搞定这个配置。根据你的需求,要让mockedObject.TheProperty.GetTheValues()返回Enumerable.Empty<MyType>,具体操作分两种常见情况:
情况1:TheProperty是已实现的具体类型(无需额外Mock)
如果TheProperty本身是一个已有实例的具体类型,直接针对它的GetTheValues()方法设置返回值即可,以常用的Moq框架为例:
// 假设你已经创建了主对象的Mock实例 var mockedObject = new Mock<YourParentObjectType>(); // 配置GetTheValues()返回空集合 mockedObject.Setup(m => m.TheProperty.GetTheValues()) .Returns(Enumerable.Empty<MyType>());
情况2:TheProperty本身是接口/抽象类型(需要Mock属性实例)
如果TheProperty是接口或者抽象类,你需要先Mock这个属性对应的实例,再关联到主Mock对象上:
// 1. 先Mock属性对应的接口/抽象类型 var mockedProperty = new Mock<IYourPropertyInterface>(); // 2. 配置这个Mock实例的GetTheValues()返回空集合 mockedProperty.Setup(p => p.GetTheValues()) .Returns(Enumerable.Empty<MyType>()); // 3. 将Mock的属性实例绑定到主对象的TheProperty上 var mockedObject = new Mock<YourParentObjectType>(); mockedObject.Setup(m => m.TheProperty) .Returns(mockedProperty.Object);
配置完成后,当你调用mockedObject.Object.TheProperty.GetTheValues()时,就会得到一个空的IEnumerable<MyType>集合了。
内容的提问来源于stack exchange,提问作者torhu
相关产品推荐
相关产品推荐

