.net webapi+autofac+autoMapper 单元测试

世事洞明皆学问,人情练达即文章。这篇文章主要讲述.net webapi+autofac+autoMapper 单元测试相关的知识,希望能为你提供帮助。
介绍上一篇:https://www.cnblogs.com/aqgy12138/p/13283646.html
上一篇创建项目的时候,附带创建了一个单元测试,那么这篇博客就用单元测试来测试一下。
github:https://github.com/QQ2287991080/AutofacSolution
为什么写一下这个呢,因为我在网上是真没找到类似的,那我就只能壮壮胆子自己写一下,希望海涵。

.net webapi+autofac+autoMapper 单元测试

文章图片

    先安装nuget包,Autofac、AutoMapper ,添加WEBAPI.Autofac.AutoMapper.Demo的引用。
首先测试的步骤是一样的,首先还是要创建autofac容器,那在单元测试的时候如何注册呢。
我的想法是放在测试类的构造函数里,同时私有化一个IContainer类型的,这个类型就是容器创建后返回的类型,
在容器builder的时候就赋值给它,那么我在测试类的全局就能使用容器中的东西。
至于如何拿到IMapper我想的是,既然我AutoMapper的在构造函数初始化的时候已经放在容器里了,那我在测试方法中
去容器中解析服务拿到IMapper作为MapperController的参数。
.net webapi+autofac+autoMapper 单元测试

文章图片

手残画了个图,希望有用。
那么接下来就写测试代码。
先看看之前MapperController的Get方法,是没有改动的。
.net webapi+autofac+autoMapper 单元测试

文章图片

  测试代码如下
 
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); } } }

然后用测试资源管理器测试一下
.net webapi+autofac+autoMapper 单元测试

文章图片

 
 
.net webapi+autofac+autoMapper 单元测试

文章图片

 
  测试成功,为了更加清晰一点,我调试一下测试。
.net webapi+autofac+autoMapper 单元测试

文章图片

 
  GifCam这个录制gif的录不了多久。。。
.net webapi+autofac+autoMapper 单元测试

文章图片

 
【.net webapi+autofac+autoMapper 单元测试】 

    推荐阅读