2016-08-24 1 views
1

Я часто рад, что нужно избегать издевательств и предпочитать окурки.Почему я должен выступать за окурки над издевательствами?

Изолирующие рамки, такие как FakeItEasy и NSubstitute, делают большую часть времени очень легким для издевки или заглушки зависимости. Эти рамки сами по себе не различают окурки или издевки, но назовите их вообще подделками или заменителями. Насколько мне известно, в первые дни «Mocking» было очень сложно создавать макетные объекты, потому что они использовали громоздкий механизм Record and Replay. Но сегодня кажется, что больше нет большой разницы.

Так почему я должен выступать за заглушки над издевательствами? Почему насмешки более хрупкие, чем окурки?

ответ

3

Вы не должны «предпочитать» штампы над Mocks; скорее, вы должны выбрать правильный инструмент для работы:

Mocks for Commands, Stubs for Queries

+0

Спасибо за ваш ответ. Может, мне следовало задать другой вопрос. Почему Mocks наносит больше урона, чем окурки или почему издеваются над более хрупкими, чем окурки? – Rookian

+0

Я бы ожидал лучшего ответа от кого-то, у кого 100K + rep. Например, вы можете определить понятия «заглушка» и «макет» своими словами (ссылки только на ответы, как вы знаете, не рекомендуется).Самая большая проблема с этим ответом, однако, заключается в том, что он основан на ошибочном «макетном» определении из «старой» (2007) книги, что противоречит тому, что предоставляют фактические насмешливые библиотеки. То есть, существует разрыв между теорией и практикой. –

+0

@Rookian Я думаю, что предпосылка для вопроса немного испорчена. Как объясняет Джерард Мезарош в этой старой (по-видимому, бесполезной) книге его, Commands производят * косвенный вывод * вместо * прямого вывода *, создаваемый Queries. Вы часто можете превращать косвенный вывод в прямой вывод, и наоборот, поэтому они фактически эквивалентны. Если я должен размышлять, люди не любят Mocks, потому что они склонны к тому, что Mocks слишком много взаимодействуют друг с другом, но это больше проблема, связанная с тем, что вы слишком много делаете, чем проблема с самими Mocks ... –

-1

По крайней мере, с недавними издевательскими инструментами нет смысла беспокоиться о заглушках против издевательств. На практике макет и заглушки - это то же самое, что и созданная насмешливой библиотекой. И так должно быть.

С издевательскими библиотеками, доступными для Java (и для C# .NET тоже, если я не ошибаюсь), вы не можете создать «просто» заглушку. Вы всегда получите объект, в котором ожидания могут быть проверены.

+0

«Вы всегда получите фиктивный объект, на котором ожидание может быть проверены» да? Вы не будете делать никаких проверок на заглушках. Между ними все еще есть разница. – Rookian

+0

@Rookian Не могли бы вы указать на какую-нибудь насмешливую библиотеку, которая позволит вам создать только заглушку, на которой ожидания не могут быть проверены? Я не знаю ни одной такой библиотеки. –

+1

Такие библиотеки не создают заглушку или макет, а поддельный объект, который может использоваться как заглушка и/или макет. – Rookian

Смежные вопросы