1) Вы можете использовать атрибут "InternalsVisibleTo" в сборке (в AssemblyInfo.cs), содержащей класс репозитория, чтобы предоставить доступ к сборке Moq.
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
[assembly: InternalsVisibleTo("YourTestClass")]
2) Mocking отделяет ваш слой данных от требований зависимости для юнит-тестов.
Подумайте об этом так: вы не будете создавать Mock для тестирования самого хранилища. Вы создаете макет для использования другими классами в качестве источника поддельных данных, чтобы проверить их функциональность, для которой требуются входные данные из хранилища в реальном приложении.
Если вы можете точно предсказать случаи данных, которые предоставит ваш репозиторий, то вы можете смоделировать эти случаи как ложные входные данные и не требовать, чтобы ваши модульные тесты действительно подключались к базе данных для получения действующих данных.
Ваш пример на самом деле ничего не будет тестировать модулем в репозитории (кроме конструктора без параметров!), Так что ... я не знаю, где вы видите эти примеры, но я не чувствую, что код выше предоставляет что-нибудь полезное "как есть".