码迷,mamicode.com
首页 > 移动开发 > 详细

.net webapi+autofac+autoMapper 单元测试

时间:2020-07-11 17:33:19      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:register   model   code   file类   nbsp   rtc   管理器   tco   app   

上一篇:https://www.cnblogs.com/aqgy12138/p/13283646.html

上一篇创建项目的时候,附带创建了一个单元测试,那么这篇博客就用单元测试来测试一下。

为什么写一下这个呢,因为我在网上是真没找到类似的,那我就只能壮壮胆子自己写一下,希望海涵。

技术图片

  先安装nuget包,Autofac、AutoMapper ,添加WEBAPI.Autofac.AutoMapper.Demo的引用。

首先测试的步骤是一样的,首先还是要创建autofac容器,那在单元测试的时候如何注册呢。

我的想法是放在测试类的构造函数里,同时私有化一个IContainer类型的,这个类型就是容器创建后返回的类型,

在容器builder的时候就赋值给它,那么我在测试类的全局就能使用容器中的东西。

至于如何拿到IMapper我想的是,既然我AutoMapper的在构造函数初始化的时候已经放在容器里了,那我在测试方法中

去容器中解析服务拿到IMapper作为MapperController的参数。

技术图片

手残画了个图,希望有用。

那么接下来就写测试代码。

先看看之前MapperController的Get方法,是没有改动的。

技术图片

 测试代码如下

 

using Autofac;
using AutoMapper;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http.Results;
using WEBAPI.Autofac.AutoMapper.Demo.Controllers;
using WEBAPI.Autofac.AutoMapper.Demo.Models;
using WEBAPI.Autofac.AutoMapper.Demo.Profiles;

namespace WEBAPI.Autofac.AutoMapper.Demo.Tests.Controllers
{
    [TestClass]
    public class MapperTest
    {
        readonly IContainer _container;
        public MapperTest()
        {
            //初始化容器
            var builder = new ContainerBuilder();
            builder.Register<IMapper>(r =>
            {
                var mapperConfiguration = new MapperConfiguration(c =>
                {
                    c.AddProfile(new TestProfile());//注册的Profile类。
                });
                mapperConfiguration.AssertConfigurationIsValid();
                return new Mapper(mapperConfiguration);
            });
            _container = builder.Build();
        }
        [TestMethod]
        public void autofac_automapper_mappercontroller_test()
        {
            //从容器中解析IMapper
            var mapper = _container.Resolve<IMapper>();
            //向控制器传参
            var controller = new MapperController(mapper);
            //执行get方法
            var result = controller.Get();
            //因为返回的是Json,那么需要把结果的进行转换,如果不用JsonResult只会得到null
            var json = result as JsonResult<TestModelDto>;
            //转换成功后的内容就是TestModelDto
            Console.WriteLine("姓名:"+json.Content.Name);
            Console.WriteLine("年龄:"+json.Content.Age);
            Assert.IsNotNull(result);
        }
    }
}

然后用测试资源管理器测试一下

技术图片

 

 技术图片

 

 测试成功,为了更加清晰一点,我调试一下测试。

技术图片

 

 GifCam这个录制gif的录不了多久。。。

技术图片

 

 ??,调试的话就看的比较清楚了,有些东西百闻不如一见,还是去亲身经历下才能明白。

.net webapi+autofac+autoMapper 单元测试

标签:register   model   code   file类   nbsp   rtc   管理器   tco   app   

原文地址:https://www.cnblogs.com/aqgy12138/p/13283977.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!