关于单元测试mock数据

1 篇文章 0 订阅

上个月了解了单元测试相关的东西,近期在做实际开发的时候有被要求脱离数据库去做单元测试

经过查找资料研究最终解决了问题

准备:依赖包 项目用的是 数据库是postgresql   直接装了最新的包其他的不知道可不可以

直接上测试源码

 [Fact]
        public async Task GetResult()
        {
            var sampleContext = await GetDataBaseContext();


            DltCompilesService service = new DltCompilesService(sampleContext);
            DltCompilesrequest resquest = new DltCompilesrequest() { secAllowanceCatCode = "f589b7c186a04960a00007e8d8f2801e" };

            //act
            var result = service.DetailSearchUTtest(resquest);//被测的方法
            //assert
            Assert.Equal("0000", result.stateCode);
        }
//mock数据的方法
        private async Task<WZSHRContext> GetDataBaseContext()
        {
            var option = new DbContextOptionsBuilder<WZSHRContext>().UseInMemoryDatabase(databaseName: "DLR").Options;//配置要模拟数据的数据库
            var dataContext = new WZSHRContext(option);
            dataContext.Database.EnsureCreated();

            for (int i = 1; i < 10; i++)
            {
                if (i == 1)
                {
                    try
                    {
//模拟数据
                        dataContext.dltSecondaryAllowanCategory.Add(new DltSecondaryAllowanCategory()
                        {
                            SecondaryAllowanceCode = "f589b7c186a04960a00007e8d8f2801e",
                            SecondaryAllowanceId = "00923d058ae948e997a3cbf3739fe000",
                            CardStatus = 0,
                            Maintainer = "WH2014208",
                            MaintainTime = DateTime.Now,
                            Status = 1,
                            CardNumber = 0,
                            IdlStatus = 0,
                            Deptids = "MZV900",
                            PlantCode = "P1",
                            AllowanceCatCode = "JT027",
                            SecondaryAllowanceName = "123456"
                        }); ;
                    }
                    catch (Exception ex)
                    {

                        throw;
                    }

                }
                else
                {
                    dataContext.dltSecondaryAllowanCategory.Add(new DltSecondaryAllowanCategory()
                    {
                        SecondaryAllowanceCode = "f589b7c186a04960a00007e8d8f2801" + i,
                        SecondaryAllowanceId = i + "0923d058ae948e997a3cbf3739fe000",
                        CardStatus = 0,
                        Maintainer = "WH2014208",
                        MaintainTime = DateTime.Now,
                        Status = 1,
                        CardNumber = 0,
                        IdlStatus = 0,
                        Deptids = "MZV900",
                        PlantCode = "P1" + i,
                        AllowanceCatCode = "JT027" + i,
                        SecondaryAllowanceName = "123456" + i
                    });
                }
                await dataContext.SaveChangesAsync();
            }
            return dataContext;
        }

如果这里报错

var option = new DbContextOptionsBuilder<WZSHRContext>().UseInMemoryDatabase(databaseName: "DLTDBName").Options;

需引用Microsoft.EntityFrameworkCore.InMemory 2.2.4就可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值