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