По большей части, мы идем с тестами конкретных репозиториев репозитория. Я никогда не видел совет не делать это сам, и я считаю, что это прекрасно работает. По большей части наши методы хранилища и, следовательно, наши макеты возвращают только отдельные модели или списки моделей (не контексты данных), поэтому легко создавать данные, специфичные для каждого теста и изолированные для каждого запроса. Это означает, что мы можем имитировать любые данные, которые нам нравятся, не затрагивая другие тесты или запросы в том же тесте. Очень легко понять, почему данные были созданы и что они тестируют.
Я был в команде, также решил время от времени создавать общие фиктивные данные. Я думаю, что решение в целом было принято, потому что подпрограммы генерировали динамические запросы, а данные, необходимые для проверки всех тестов, привели к дублированию значительной части базы данных. Однако, оглядываясь назад, я, вероятно, предположил бы, что нужно проверять только итоговые запросы, а не содержимое, возвращаемое из базы данных. И, таким образом, никакие данные не будут подвергнуты фальсификации, хотя, это потребовало бы некоторых изменений кода. Я упоминаю это только для иллюстрации того, что если вы не можете найти способ заставить вариант 2 работать, возможно, есть способ реорганизовать код, чтобы сделать его более тестируемым.