Как вы издеваетесь над классом со свойством readonly? - PullRequest
6 голосов
/ 19 июня 2009

Любая идея в Moq для класса с модификатором readonly:

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.ID.

Есть идеи?

Ответы [ 2 ]

11 голосов
/ 19 июня 2009

Проблема не в том, что он доступен только для чтения, а в том, что он не виртуальный.

2 голосов
/ 22 июня 2009

Единственный известный мне движок, позволяющий изменять не виртуальные методы в классах и запечатанных классах, - это Typemock.

Большинство других фальшивых фреймворков лучше работают с интерфейсами, и, если интерфейс недоступен, имитируемые участники должны быть виртуальными.

...