【问题标题】:Mocking a call to an object with a property of type List使用 List 类型的属性模拟对对象的调用
【发布时间】:2009-10-15 03:52:24
【问题描述】:
我正在学习起订量,我想模拟一个接口 ISecureAsset,它有一个属性 Contexts,它返回一个 SecurityContexts 列表。我正在另一个访问 Contexts 属性以进行授权的类上测试一个方法。
public interface ISecureAsset {
List<SecurityContext> Contexts { get; set; }
}
如何使用最小起订量做到这一点?我也希望能够在 Contexts 列表中设置值。
【问题讨论】:
标签:
c#
.net
properties
mocking
moq
【解决方案1】:
只需设置该属性以返回一个伪造的 SecurityContexts 列表。
var mockAsset = new Mock<ISecureAsset>();
var listOfContexts = new List<SecurityContext>();
//add any fake contexts here
mockAsset.Setup(x => x.Contexts).Returns(listOfContexts);
Moq quickstart guide 可能会对您有所帮助。
【解决方案2】:
var mockSecureAsset = new Mock<ISecureAsset>();
mockSecureAsset.SetupGet(sa => sa.Contexts).Return(new List<SecurityContext>());
或
mockSecureAsset.SetupProperty(sa => sa.Contexts);
mockSecureAsset.Object.Contexts = new List<SecurityContext>();