Второй контекст БД нельзя использовать в модульных тестах

После того, как мне удалось заставить несколько контекстов базы данных работать в шаблоне asp.net (с некоторой помощью здесь несколько баз данных ASP.NET Boilerplate и DbContexts), я столкнулся с другой проблемой. В модульных тестах, когда я использую один из дополнительных контекстов базы данных, например:

 using (var uow = this.UnitOfWorkManager.Begin())
 {
   var r = this.SlipLineRepository.GetAll().ToList();
 }

Я получаю эту ошибку:

Abp.AbpException : Could not resolve DbContextOptions for SlipStreamAPI.SlipStreamDB.miSlipLiveContext, SlipStreamAPI.EntityFrameworkCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.

Итак, мои вопросы: 1) Можно ли протестировать контексты БД в памяти, если они являются вторым, третьим и т. Д. Контекстом? 2) Если да, то что мне сделать, чтобы он заработал?


person Bertus van Zyl    schedule 23.08.2018    source источник


Ответы (1)


Вы должны зарегистрируйте DbContextOptions в ServiceCollectionRegistrar.cs:

public static void Register(IIocManager iocManager)
{
    // ...

    var builder = new DbContextOptionsBuilder<miSlipLiveContext>();
    builder.UseInMemoryDatabase(Guid.NewGuid().ToString()).UseInternalServiceProvider(serviceProvider);

    iocManager.IocContainer.Register(
        Component
            .For<DbContextOptions<miSlipLiveContext>>()
            .Instance(builder.Options)
            .LifestyleSingleton()
    );
}
person aaron    schedule 23.08.2018