То, что вы должны делать, - это использование Inversion of Control или Dependency инъекций.
Ваши классы не должны быть привязаны к реализации другого класса, особенно в таких слоях, как этот, скорее он должен принимать интерфейс, представляющий репозиторий пользователя, в качестве конструктора или свойства. Затем, когда он запускается, вы предоставляете конкретную реализацию, и она использует это. Затем вы можете создавать подделки, которые реализуют интерфейс репозитория и предоставляют их во время тестирования.
Существует очень много контейнеров IOC, Unity, Ninject, Castle Windsor и StructureMap.
Я просто хотел пояснить, что во время ваших юнит-тестов я не знаю, что вы на самом деле хотите использовать Контейнер IOC. Конечно, интеграционные тесты, но для модульных тестов просто добавьте новый объект, который вы тестируете, и предоставьте фальшивку во время этого процесса. Контейнеры IOC, по крайней мере, IMO, помогут на уровне тестирования приложений или интеграции и облегчат настройку.
Ваши юнит-тесты, вероятно, должны оставаться «чистыми» и просто работать с объектами, которые вы пытаетесь протестировать. По крайней мере, это то, что работает для меня.