Я понимаю это следующим образом:
Макет:
У вас есть стандартное многоуровневое приложение, например, Controller-> Service-> Repository.Вы хотите проверить его.Таким образом, вы используете mocks и внедряете Repository Mock в Service, чтобы вы могли изолировать тестирование Service.
Test Driver:
У вас то же приложение, Controller-> Service-> Repository.Вы выполнили все модульные тесты, и теперь вы хотите проверить уровень репозитория.Не имеет смысла использовать Mocks во время тестирования репозитория, потому что они не покажут, правильны ли ваши sql запросы.Итак, пришло время для интеграционных тестов.Также вы не хотите тестировать всю систему (которая может состоять из 100 сервисов), вы хотите изолировать свое приложение, поэтому вы раскручиваете, скажем, Docker-контейнер с базой данных (или встроенной базой данных, такой как h2) и запускаете вашзапросы к этой базе данных только для тестирования.
Тот же пример применим для клиентов других служб, например, вы хотите получить что-то по HTTP, и вместо вызова реальной службы вы запускаете MOCK SERVER, например, wiremock.
Драйверыявляются модулями, которые действуют как временная замена для вызывающего модуля и дают тот же вывод, что и у фактического продукта.
Драйверы также используются, когда программное обеспечение должно взаимодействовать с внешней системой и обычно сложнее, чем заглушки.
Напомним:
Моты имеют небольшой размер в объектах памяти, которые имеют очень простую конфигурацию и используются во время модульного тестирования для изоляции классов.
Тестовые драйверыявляются более сложными, они используются во время интеграционного тестирования для замены компонентов в вашей инфраструктуре для изоляции всего приложения.