Это по замыслу.Контейнер не может из коробки узнать, какую услугу вы намеревались.Если в рабочем коде будет только одна реализация интерфейса, то ваш регистрационный код должен убедиться, что зарегистрировано не более одной службы.
Если вы намереваетесь поддерживать несколько реализаций, тогда ваш контроллер может принятьзависимость от IEnumerable<IPhotoBlogRepository>
.Autofac предоставит контроллеру набор всех зарегистрированных служб, реализующих этот интерфейс.
Если контроллеру требуется еще более детальный контроль, посмотрите, как Autofac поддерживает метаданные .
Тем не менее, из вашего примера я вижу, что вы регистрируете тестовую реализацию интерфейса.В модульных тестах я редко разделяю SUT (ваш контроллер в данном случае) из контейнера, а скорее создаю его экземпляр напрямую.Это устраняет проблему «замены» реальных служб поддельными, поскольку вы всегда будете передавать их непосредственно конструктору контроллера.