使用List类型的属性模拟对对象的调用

时间:2009-10-15 03:52:25

标签: c# .net properties mocking moq

我正在学习Moq,我想模拟一个ISecureAsset接口,它有一个属性Contexts,它返回一个SecurityContexts列表。我正在另一个访问Contexts属性进行授权的类上测试一个方法。

public interface ISecureAsset {

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

我如何使用Moq执行此操作?我希望能够在上下文列表中设置值。

2 个答案:

答案 0 :(得分:4)

只需设置该属性即可返回一个虚假的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可能对您有所帮助。

答案 1 :(得分:3)

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