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; } } }