Это похоже на Внедрение зависимостей с провайдером нестандартного членства , но ответы там не решают проблему для меня.
У меня есть пользовательский поставщик членства, который зависит от класса репозитория. ASP.NET всегда будет создавать это экземпляр с помощью конструктора без параметров, поэтому для разрешения зависимости от хранилища у меня есть своего рода метод поиска служб ... мой ctor выглядит так:
public CustomMembershipProvider()
{
_userRepository = AppStart_NinjectMVC3.Resolve<IUserRepository>();
}
И этот метод Resolve выглядит следующим образом ..
public static T Resolve<T>() where T : class
{
return _kernel.Get<T>();
}
Это прекрасно работает, когда я запускаю веб-приложение, потому что _kernel настроен правильно. Однако мне нужно протестировать методы на моем провайдере членства. Поэтому, когда мой тестовый код пытается вызвать методы на провайдере членства, он создает новый класс провайдера членства с ctor без параметров, что приводит к ошибкам, поскольку _kernel не настроен.
Что я хочу сделать, так это как-то внедрить мой класс FakeUserRepository, но как мне этого добиться?