Я смотрел на несколько платформ Насмешки для ASP.NET и столкнулся с Microsoft Moles. Это, кажется, часть Исследовательской группы Microsoft и задавалось вопросом, Выбрал ли кто-либо здесь Родинки по другим зрелым платформам Насмешки, таким как Moq.
На самом деле я использую Moq и Moles в одном тестовом проекте. У обоих есть сильные стороны, и я использую их там, где это необходимо. Как правило, я использую Moq для стандартного типа AAA-тестирования с проверкой, а Moles - это «большая пушка» для вещей, которые иначе невозможно избежать, таких как вызовы методов расширения и т. Д.
Мне нравится эта схема, потому что каждый тест может быть таким же простым и, насколько это возможно, разумным, даже несмотря на то, что настройки имитации могут сильно отличаться от теста к тесту.
Moles чаще сравнивают / противопоставляют TypeMock в том смысле, что он предлагает набор возможностей, выходящих за рамки оптимального использования Moq и / или RhinoMocks.
Главный вопрос, который вы должны задать себе при выборе, - хотите ли вы, чтобы ваше тестирование оставалось относительно нетехнологичным, или же вовлекаться в технические уловки более высокого уровня. Это во многом будет продиктовано тем, что вы делаете - вы отметили ASP.NET, а не MVC, что говорит о том, что это действительно может быть актуально для вас.
Посмотрите это видео на Dimecasts.net , чтобы получить хороший обзор.
Moles был разработан для эффективной работы с анализом белого ящика Pex. Все остальные макеты фреймворков обычно связаны с большими накладными расходами.
Moles предлагает простое ценностное предложение: заменить любой метод .NET делегатом. По дизайну Moles не предоставляет API для выражения «верификации», как это делают другие фреймворки. Вам действительно решать, подходит вам это решение или нет.
Если вам нужно иметь дело с (устаревшим) кодом, который зависит от жестко запрограммированных статических методов или запечатанных типов с внутренними конструкторами, Moles может помочь вам разобраться в этих случаях.
Если у вас есть интерфейсы и хорошо разбитый на компоненты код, Moles также генерирует тонкие заглушки, то есть реализацию интерфейса, которые вы можете использовать с профилировщиком.