2009-10-15 85 views
4

我正在学习Moq,并且我想模拟一个接口ISecureAsset,它具有一个属性Contexts,它返回SecurityContexts列表。我正在测试另一个访问Contexts属性授权的类的方法。嘲笑对类型为List的属性的对象的调用

public interface ISecureAsset { 

    List<SecurityContext> Contexts { get; set; } 
} 

我怎样才能做到这一点与起订量?我希望能够在上下文列表中设置值。

回答

4

只需设置该属性即可返回伪造的SecurityContext列表。

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可能对您有些帮助。

+0

接受在一分钟内...是某种记录? – womp 2009-10-15 04:00:59

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>();