Почему я должен выбрать Moles в качестве фреймворка для насмешек?

Я просматривал несколько фреймворков Mocking для ASP.NET и наткнулся на Microsoft Moles. Похоже, это часть исследовательской группы Microsoft, и она задавалась вопросом, выбрал ли кто-нибудь здесь Moles по сравнению с другими зрелыми фреймворками Mocking, такими как Moq.


person user300981    schedule 14.06.2010    source источник


Ответы (3)


На самом деле я использую Moq и Moles в одном тестовом проекте. У обоих есть сильные стороны, и я использую их там, где это необходимо. Как правило, я использую Moq для стандартного типа AAA-тестирования с проверкой, а Moles - это `` большая пушка '' для вещей, которые иначе нельзя подделать, таких как вызовы методов расширения и т. Д.

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

person ZeroBugBounce    schedule 21.06.2010
comment
+1 Важный момент, что и то, и другое можно использовать вместе - вам просто нужно тщательно выбирать своего «насмешника первой инстанции». - person Ruben Bartelink; 21.06.2010
comment
Было бы здорово увидеть пример этого, любого сообщения в блоге о вашем рабочем процессе? Я нахожу это немного неестественным для TDD tbh - person roundcrisis; 09.07.2010
comment
Вы правы в том, что это заслуживает примера - у меня его сейчас нет, но я посмотрю вокруг и посмотрю, можно ли превратить какой-либо код, который у меня есть, в один. - person ZeroBugBounce; 15.07.2010
comment
Вот тест NUnit с использованием кротов: - person Frank Schwieterman; 24.08.2010

Moles был разработан для эффективной работы с анализом белого ящика Pex. Все остальные макеты фреймворков обычно связаны с большими накладными расходами.

Moles предлагает простое ценностное предложение: заменить любой метод .NET на делегат. По дизайну Moles не предоставляет API для выражения «верификации», как это делают другие фреймворки. Вам действительно решать, подходит ли вам это решение или нет.

Если вам нужно иметь дело с (устаревшим) кодом, который зависит от жестко запрограммированных статических методов или запечатанных типов с внутренними конструкторами, Moles может помочь вам справиться с этими случаями.

Если у вас есть интерфейсы и хорошо разбитый на компоненты код, Moles также генерирует тонкие заглушки, то есть реализацию интерфейса, которые вы можете использовать с профилировщиком.

person Peli    schedule 19.06.2010
comment
+1 Если вы хотите узнать, сколько раз метод был вызван в Moles, вы должны ввести свой собственный счетчик и сделать так, чтобы делегат вызывал исходный метод (при желании). Сравните это с Times.Once и другими методами, предоставляемыми некоторыми фреймворками (например, Moq). - person Pat; 12.08.2010

Moles чаще сравнивают / противопоставляют TypeMock в том смысле, что он предлагает набор возможностей, выходящих за рамки оптимального использования Moq и / или RhinoMocks.

Главный вопрос, который вы должны себе задать, выбирая, - хотите ли вы, чтобы ваше тестирование оставалось относительно низкотехнологичным или участвовало в технических хитростях более высокого уровня. Это во многом будет продиктовано тем, что вы делаете - вы отметили ASP.NET, а не MVC, что говорит о том, что это действительно может быть актуально для вас.

Посмотрите это видео на Dimecasts.net, чтобы получить хороший обзор.

person Ruben Bartelink    schedule 14.06.2010
comment
@ bobsmith123: В таком случае я лично не видел бы причин использовать более тяжелый фреймворк для имитации - я бы отложил использование такой артиллерии до тех пор, пока это необходимо. Использование Pex - это отдельное решение, которое следует принимать независимо от вашего выбора фреймворка для фиксации. Почему вы пометили q с помощью Pex, а затем не упомянули о нем - заинтересованы ли вы в его использовании / вы спрашиваете, арахисовое масло и желе / ​​вы верите, что оно неотделимо от кротов? - person Ruben Bartelink; 15.06.2010