TypeMock - это коммерческий продукт (это означает, что вам придется заплатить за него), но позволит вам издеваться над конкретными объектами - в отличие от RhinoMocks/NUnit/MoQ, которые могут только издеваться над интерфейсом/абстрактным классом. Как это достигается, это пограничная черная магия, но с CLR она делает некоторые очень умные вещи.
Это может быть особенно полезно при использовании библиотек в вашем проекте, которые не используют многие интерфейсы. Таким образом, вы могли бы, например, использовать TypeMock для издевания объектов LINQtoSQL datacontext или Sharepoint. Однако, если вы используете TypeMock, это нет оправданий для плохого дизайна в вашей заявке.
Насколько я знаю, помимо незначительных различий в синтаксисе большинство из насмешливых фреймворков отошли от старой модели записи/воспроизведения. Как правило, вы настраиваете свои макеты, написав ожидания, используя Fluent Interface.
Лично я использовал только MoQ и I < 3 it.
Статические и герметичные классы не всегда плохие, но их невозможно издеваться с использованием RhinoMocks/NUnit/MoQ. Вы просто отказываетесь от всего набора функций только потому, что ваши инструменты не поддерживают его? –
@HeavyWave они не являются простыми проектами, но если вы окажетесь в ситуации, когда вам нужно/нужно издеваться над ними, то это, вероятно, плохой дизайн. Это время_ – Kirschstein
А, нет. У меня есть TON классов, которые не должны быть расширены пользователем, поэтому они не являются виртуальными/герметичными. И угадайте, что - мне часто нужно издеваться над одним из этих кланов для nit etst, где мне нужно конкретное поведение этого класса для показа. Разблокировать их нехорошо - структура «полагается» на них не расширяется. – TomTom