На самом деле я нашел два варианта использования фиктивных классов, которые мы используем при тестировании реализации репозитория.
Первое - это проверить сервисы, которые используют реализацию эквивалента «ISomethingRepository», которую вы упоминаете. Тем не менее, наши реализации репозитория создаются фабрикой. Это означает, что мы пишем тесты для «ISomethingRepository», но не для «MockSomethingRepository» напрямую. Проводя тестирование на интерфейсе, мы можем легко утверждать, что покрытие кода для наших тестов покрывает 100% интерфейса. Обзоры кода обеспечивают простую проверку того, что тестируются новые члены интерфейса. Даже если разработчики используют макет, возвращаемый фабрикой, сервер сборки имеет другую конфигурацию, которая проверяет конкретную реализацию, которую фабрика возвращает в ночных сборках. Он обеспечивает лучшее из обоих миров с точки зрения охвата тестами и локальных характеристик.
Во-вторых, я удивлен, что никто не упомянул. Моя команда отвечает за средний уровень. Наши веб-разработчики несут ответственность за интерфейс веб-продуктов. Создавая фиктивные реализации репозитория, нет искусственного препятствия в ожидании моделирования и реализации базы данных до начала внешней работы. Могут быть написаны представления, которые будут построены на макете, чтобы обеспечить минимальное количество «реальных» данных, чтобы соответствовать ожиданиям веб-разработчиков. Например, могут быть предоставлены данные, содержащие строковые данные минимальной и максимальной длины, чтобы убедиться, что они не нарушают их реализацию и т. Д.
Поскольку фабрики, которые мы используем, связаны с тем, какой «ISomethingRepository» возвращать, у нас есть локальные тестовые конфигурации, сборочные тестовые конфигурации, производственные конфигурации и т. Д. Мы намеренно стараемся убедиться, что ни одна команда в проекте не имеет необоснованного ожидания раз из-за времени реализации другой команды. Большая часть времени ожидания по-прежнему предоставляется командой разработчиков, но мы можем запускать наши доменные объекты, репозитории и сервисы более быстрыми темпами, чем фронтальная разработка.
Конечно, YMMV. ; -)