Просто, чтобы добавить к изобразительному ответов здесь, фиктивные объекты используются в сверху вниз или снизу вверх структурного программирования (ООП тоже). Они там, чтобы предоставлять данные модулям верхнего уровня (GUI, логическая обработка) или действовать как макетный вывод.
Рассмотрите подход «сверху вниз»: сначала вы разрабатываете графический интерфейс, но графический интерфейс должен иметь данные. Таким образом, вы создаете базу данных макета, которая возвращает только данные std :: vector <>. Вы определили «контракт» отношений. Кто заботится о том, что происходит внутри объекта базы данных, - пока мой список GUI получает std :: vector <> Я счастлив. Это может помочь предоставить информацию для входа в систему, независимо от того, что нужно для работы графического интерфейса.
Рассмотрите подход снизу вверх. Вы написали парсер, который читает в текстовых файлах с разделителями. Откуда вы знаете, работает ли он? Вы пишете mock 'data-sink' для этого объекта и маршрутизируете данные там, чтобы проверить (хотя обычно), что данные читаются правильно. Для модуля на следующем уровне может потребоваться 2 источника данных, но вы их только написали.
И, определяя макет объектов, вы также определяете договор о том, как отношения. Это часто используется в тестовом программировании. Вы пишете тестовые примеры, используете макетные объекты, чтобы заставить их работать, и часто, чем нет, интерфейс макет-объекта становится окончательным интерфейсом (поэтому в какой-то момент вам может понадобиться выделить интерфейс макетного объекта в чистый абстрактный класс) ,
Надеется, что это помогает
Конечно, на * плохой стороне Mock Objects происходит тот факт, что при изменении интерфейса реального класса кто-то должен запускать поиск и обновление Mocks, и тем временем все эти «успешные» тесты ложны. –
Это можно смягчить, если один из ваших тестов включает проверку интерфейса, который не изменился. Этот тест терпит неудачу, вы знаете, что ваши издевательства будут неправильными. –
Но это не меняет того факта, что подписчики интерфейса нарушены. – Gutzofter