Мне нужно зарегистрировать свой контейнер Autofac с определенным интерфейсом, для этого случая я хочу разрешить макет.
Как я могу это сделать?
Я пробовал:
var AppContainer = ApplicationContainer.GetApplicationContainer();
var cb = new ContainerBuilder();
cb.RegisterType<Mock<IStudyLoader>>().As<IStudyLoader>().SingleInstance();
cb.Update(AppContainer);
Я не хочу менять свой код для разрешения чего-то другого, кроме IStudyLoader
, но Mock<IStudyLoader>
не может заменить IStudyLoader
; например, Mock<IStudyLoader>.Object
может заменить IStudyLoader
, но я не могу зарегистрировать Mock<IStudyLoader>.Object
, потому что это не тип.
Поправьте меня пожалуйста; У меня такое чувство, что я что-то упускаю.
(У меня есть другое ограничение, я не могу использовать другой контейнер, кроме ApplicationContainer.GetApplicationContainer()
)
(я думаю, что лучше вводить зависимость вручную при тестировании, но я не хочу менять производственный код на этот раз.)