Вот пример: если вы пишете код, который заполняет базу данных, вы можете проверить, добавил ли конкретный метод данные в базу данных.
При настройке копии базы данных для тестирования возникает проблема, заключающаяся в том, что если вы предполагаете, что до вызова проверяемого метода нет записей, а после - одна запись, то вам необходимо откатить базу данных до предыдущего состояния, добавив, таким образом, к накладным расходам на проведение теста.
Если вы предполагаете, что существует только одна запись больше, чем раньше, она может конфликтовать со вторым тестером (или даже вторым тестом в том же коде), подключающимся к той же базе данных, что вызывает зависимости и делает тесты хрупкими. *
Макет позволяет вам держать тесты независимыми друг от друга и легко настраивать.
Это только один пример - я уверен, что другие могут предоставить больше.
Я согласен на 100% с другими участниками этой темы, особенно с рекомендацией к статье Мартина Фаулера.