Вы можете посмотреть здесь (блог Мартина Фаулера) для получения информации, связанной с Mocks.
Mock используются, когда вы хотите протестировать код, имеющий зависимость от побочных эффектов.Звонки в какую-либо сервисную библиотеку, например DAO, как предложил другой автор, являются типичным использованием.Однако использование макетов никогда не является обязательным.В случае DAO альтернативой может быть предоставление вашему протестированному классу некоторого объекта-оболочки DAO.В тестовом примере вы предоставили бы другой тип объекта-оболочки DAO, который генерирует контролируемые результаты.Этот метод, позволяющий избежать ложных срабатываний, называется «инъекцией зависимостей» и дает то же преимущество, что и имитации (на самом деле это то же самое, что использование библиотек имитаций, но сделано «вручную»).Но в некоторых случаях использование внедрения зависимостей вместо библиотеки Mocks немного неудобно (вам нужно определить некоторый объект-обертку, который вы можете получить вместо использования стандартного).
Лично я не очень люблю издеваться и стараюсь по возможности избегать их использования.Причины, по которым я им не нравлюсь, состоят в том, что они легко приводят к тестам, которые не дают ошибок при изменении поведения внешнего API, да, это настоящие модульные тесты, но слишком убедительные, на мой вкус.Другой момент заключается в том, что, используя mocks, мы склонны проверять внутреннее поведение того, что, как я считаю, должно быть черным ящиком, но Mocks также имеют отличных поклонников.