WeEngineTestBase.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using System;
  2. using System.Data.Common;
  3. using Abp.TestBase;
  4. using Castle.MicroKernel.Registration;
  5. using EntityFramework.DynamicFilters;
  6. using WePlatform.EF;
  7. using WePlatform.SeedData;
  8. namespace WePlatform
  9. {
  10. /// <summary>
  11. /// 这是所有测试类的基础类。
  12. /// 它准备了ABP系统,模块和一个伪造的内存数据库。
  13. /// 具有初始数据的种子数据库(<see cref =“TestDataBuilder
  14. /// 提供使用DbContext轻松使用的方法。
  15. /// </summary>
  16. public abstract class WeEngineTestBase : AbpIntegratedTestBase<WeEngineTestModule>
  17. {
  18. protected WeEngineTestBase()
  19. {
  20. //种子初始数据
  21. //UsingDbContext(context => new TestDataBuilder(context).Create());
  22. }
  23. protected override void PreInitialize()
  24. {
  25. //假DbConnection使用Effort!
  26. LocalIocManager.IocContainer.Register(
  27. Component.For<DbConnection>()
  28. .UsingFactoryMethod(Effort.DbConnectionFactory.CreateTransient)
  29. .LifestyleSingleton()
  30. );
  31. base.PreInitialize();
  32. }
  33. public void UsingDbContext(Action<WePlatformDbContext> action)
  34. {
  35. using (var context = LocalIocManager.Resolve<WePlatformDbContext>())
  36. {
  37. context.DisableAllFilters();
  38. action(context);
  39. context.SaveChanges();
  40. }
  41. }
  42. public T UsingDbContext<T>(Func<WePlatformDbContext, T> func)
  43. {
  44. T result;
  45. using (var context = LocalIocManager.Resolve<WePlatformDbContext>())
  46. {
  47. context.DisableAllFilters();
  48. result = func(context);
  49. context.SaveChanges();
  50. }
  51. return result;
  52. }
  53. }
  54. }