Я пытаюсь внедрить инициализатор базы данных, чтобы я мог использовать инициализатор тестовых данных в моем модульном тесте, а реальный - в производстве.
Вот мой вспомогательный модуль.
class IocBindings : NinjectModule
{
public override void Load()
{
Bind<DbContext>()
.To<ActualEntityFrameworkDataContext>();
Bind(typeof(IDatabaseInitializer<>))
.To(typeof(TestDataContextInitializer));
}
}
Как видите, определена только одна привязка; однако, когда я запускаю тест, он терпит неудачу со следующим исключением:
Ninject.ActivationException : Error activating IDatabaseInitializer{TContext} More than one matching bindings are available.
У меня есть базовое тестовое исправление, в котором я создаю экземпляр ядра и передаю его в общий сервисный локатор:
[TestFixture]
public class TestContext
{
private IKernel NinjectKernel { get; set; }
[SetUp]
public void setup()
{
NinjectKernel = new StandardKernel(new INinjectModule[] { new IocBindings() } );
ServiceLocator.SetLocatorProvider(() => new NinjectServiceLocator(NinjectKernel));
}
[TearDown]
public void TearDownAttribute()
{
NinjectKernel.Dispose();
}
}
Я новичок в nject, поэтому не уверен, правильно ли я его настроил.
любая помощь в решении этой проблемы очень приветствуется.
Приветствия