你如何用readonly属性模拟课程?

时间:2009-06-18 21:34:16

标签: c# mocking moq

对于具有只读修饰符的类,在Moq中有任何想法:

Class myClass
{
   private  int id;
   public int Id{ get {return id;}}

  public myClass(int id)
  { this.id  = id }
}

我试图模仿这个对象:

var myMock= new Mock<myClass>();
myMock.SetupGet(m => m.ID).Return(555);

它给我的错误:

  

System.ArgumentException:无效   在不可覆盖的成员上设置   M =&GT; m.ID

有什么想法吗?

2 个答案:

答案 0 :(得分:11)

问题不在于它是只读的,而是它不是虚拟的。

答案 1 :(得分:2)

我所知道的唯一一个模拟引擎允许在类和密封类上更改非虚方法是Typemock。

大多数其他模拟框架在接口方面效果更好,如果接口不可用,被模拟的成员需要是虚拟的。