第二个数据库上下文在单元测试中不可用
Second DB Context not usable in unit tests
在我设法让多个数据库上下文在 asp.net 样板中工作(在这里 得到一些帮助)之后,我 运行 遇到了另一个问题。在单元测试中,当我像这样使用其中一个附加数据库上下文时:
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) 如果是,我应该怎么做才能让它发挥作用?
你应该 register 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()
);
}
在我设法让多个数据库上下文在 asp.net 样板中工作(在这里
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) 如果是,我应该怎么做才能让它发挥作用?
你应该 register 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()
);
}