【问题标题】: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>();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-18
      • 1970-01-01
      • 1970-01-01
      • 2016-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多