Почему насмешливое предпочтение отдается интерфейсам? - PullRequest
2 голосов
/ 04 сентября 2010

Я смотрел на примеры насмешек с использованием Moq и Rhino Mocks, и все примеры кажутся имитирующими интерфейсы.Почему это?Я слышал, что они могут высмеивать статические классы, но как насчет нестатических классов?

Ответы [ 2 ]

3 голосов
/ 06 сентября 2010

Потому что:

  1. Все методы на вашем объекте должны быть виртуальными, чтобы имитировать их
  2. Ваш макет все равно должен был бы выполнить конструктор реального объекта, passпараметры и запустить логику внутри него, что может быть больно.
1 голос
/ 04 сентября 2010

Потому что это было ограничение DynamicProxy (используется для создания экземпляра фиктивного объекта). Не будет проблем, если вы используете интерфейс, но если вы хотите использовать класс, вы должны сделать все открытые члены virtual http://tiredblogger.wordpress.com/2008/05/06/moq-mocks-use-virtual-method-or-interfaces/

...