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