В чем разница между классами насмешек и интерфейсами? - PullRequest
2 голосов
/ 15 марта 2011

В чем разница между классами насмешек и интерфейсами в Rhino Mocks?

Ответы [ 2 ]

5 голосов
/ 15 марта 2011

Вы не можете смоделировать конкретные классы как таковые, если этот класс не является абстрактным или имеет виртуальные методы. Вы можете подделать контракт абстрактного класса или переопределить виртуальные методы с помощью искусственного метода, используя Rhino Mocks.

Насмешка над интерфейсом просто означает, что вы определяете ложную реализацию указанного интерфейса.

3 голосов
/ 15 марта 2011

Чтобы смоделировать класс, свойства и функции должны быть объявлены как виртуальные. При издевательстве над интерфейсом вы можете без проблем издеваться.

Кроме того, можно запускать код, который не является макетом, если вы имитируете класс, это невозможно сделать, если вы имитируете интерфейс. Допустим, вы хотите проверить, как функционирует ваш класс, когда определенная функция возвращает определенное значение, которое вам может понадобиться для насмешки над классом. Я бы порекомендовал оставаться с насмешливыми интерфейсами, насколько это возможно. Это намного проще.

...