using Abp.TestBase;
using Buissness.UnitTest.InitialData;
using Business.Core.MongoDBHelper;
using Business.EntityFrameworkCore;
using Castle.MicroKernel.Registration;
using System.Data.Common;
using Volo.Abp.Modularity;
namespace Buissness.UnitTest
{
///
/// 这是所有测试类的基础类。
/// 它准备了ABP系统,模块和一个假的内存数据库。
/// 具有初始数据的种子数据库()。
/// 提供使用DbContext轻松使用的方法。
///
public abstract class UnitTestBase: AbpIntegratedTestBase
{
protected UnitTestBase()
{
//种子初始数据
UsingDbContext(context => new UnitTestInitialDataBuilder().Build(context));
}
protected override void PreInitialize()
{
//假DbConnection使用Effort!
LocalIocManager.IocContainer.Register(
Component.For()
.UsingFactoryMethod(Effort.DbConnectionFactory.CreateTransient)
.LifestyleSingleton()
);
base.PreInitialize();
}
public void UsingDbContext(Action action)
{
using (var context = LocalIocManager.Resolve())
{
action(context);
context.SaveChanges();
}
}
public T UsingDbContext(Func func)
{
T result;
using (var context = LocalIocManager.Resolve())
{
result = func(context);
context.SaveChanges();
}
return result;
}
}
}