Twelfth Day: OA rights management system (unit testing)

OYW.OA.XUnitTest

nuggets

using Autofac;
using log4net;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.Extensions.DependencyInjection;
using OYW.OA.DTO;
using OYW.OA.EFRepositories;
using OYW.OA.Infrastructure.Aop;
using OYW.OA.Infrastructure.Redis;
using OYW.OA.Web.Models;
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Text;

namespace OYW.OA.XUnitTest
{
    public class IocManager
    {

        private static IocManager _instance;

        public static IocManager Instance
        {
            get
            {
                if (_instance == null)
                {
                    _instance = new IocManager();
                    _instance.Init();
                }
                return _instance;
            }
        }

        public T Resolve<T>()
        {
            return Container.Resolve<T>();
        }

        private IContainer Container { get; set; }
        public void Init()
        {
            var builder = new ContainerBuilder();
            RegisterService(builder);
            Container = builder.Build();
        }

        private void RegisterService(ContainerBuilder builder)
        {

            DbContextOptionsBuilder<OAEntity> dbContextOptionsBuilder = new DbContextOptionsBuilder<OAEntity>();
            dbContextOptionsBuilder.UseSqlServer("Data Source=.;Initial Catalog=OYW.OA;Integrated Security=True");
            builder.Register<OAEntity>(u => new OAEntity(dbContextOptionsBuilder.Options)).InstancePerDependency();

            builder.RegisterType(typeof(UserMgr)).AsSelf().SingleInstance();
            builder.RegisterType(typeof(RedisHelper)).AsSelf().SingleInstance();

            builder.RegisterType<AopInterceptor>();
            var applicationServices = Assembly.Load("OYW.OA.Application");
            builder.RegisterAssemblyTypes(applicationServices)
           .Where(t => t.Name.EndsWith("Service") && !t.GetTypeInfo().IsAbstract)
           .AsImplementedInterfaces().InstancePerDependency();

            builder.Register<OAUser>(u => GetCurrentUser()).InstancePerDependency();
            builder.Register<ILog>(u => GetLog()).InstancePerDependency();
        }

        private OAUser GetCurrentUser()
        {
            string sessionid = "";
            //var redisHelper = IocManager.Resolve<RedisHelper>();
            //var user = redisHelper.Get<OAUser>(sessionid);
            //if (user == null) user = new OAUser { };
            return null;
        }

        private ILog GetLog()
        {
            return null;
        }
    }
}
                                        
using System;
using Xunit;
using OYW.OA.Infrastructure;
using OYW.OA.Application.People;
using OYW.OA.ApplicationInterface.People;

namespace OYW.OA.XUnitTest
{
    public class UnitTest1
    {
        public UnitTest1()
        {

        }
        [Fact]
        public void Test1()
        {
            var departmentService = IocManager.Instance.Resolve<IDepartmentService>();
            var str = departmentService.LoadDeptTree("fe6258ca-1ade-4a62-ae9f-dca5d7715da0");
            Assert.NotNull(departmentService);
        }
    }
} 

operation result:

Published 128 original articles · won praise 18 · views 50000 +

Guess you like

Origin blog.csdn.net/xiaoxionglove/article/details/80955197