博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Ninject+Moq在单元测试中抽象数据访问层
阅读量:6914 次
发布时间:2019-06-27

本文共 1845 字,大约阅读时间需要 6 分钟。


一、测试方法的业务逻辑时,通常都需要从数据库读取测试数据,但是每次初始化数据库数据都很麻烦,也会影响到其它业务对数据的访问,怎样抽象数据访问层呢?就是用Moq去模拟数据访问的逻辑
 
 
二、步骤如下
2.1 定义数据访问接口和实现
public interface IDBAccess    {        List
GetList(string request); } public class DBAccessImp : IDBAccess { public List
GetList(string request) { throw new NotImplementedException(); } }
2.2 使用Ninject维护接口和实现的关系,并在业务类的构造函数中进行注入
     a) 初始化Ninject
  
static void Main(string[] args)        {            //创建Ninject内核实例            IKernel ninjectKernel = new StandardKernel();             //绑定接口到实现了该接口的类            ninjectKernel.Bind
().To
(); }
 
      b) 业务类(构造函数注入) 
public class TestClass    {        private IDBAccess db = null;        public TestClass(IDBAccess db)        {            this.db = db;        }         public List
GetList() { //这里可认为是调用数据访问层的实现代码 var response = this.db.GetList("Hello"); return response; } }
2.3 在单元测试中使用Moq抽象模拟数据访问层逻辑
 
[TestCategory("测试分类")]        [TestMethod]        public void GetListTest()        {            var mockDb = new Mock
(); var list = new List
(); list.Add("Hello"); list.Add("World"); list.Add("James"); //设置请求参数;返回参数等 mockDb.Setup(m => m.GetList(It.IsAny
())) .Returns(list); TestClass test = new TestClass(mockDb.Object); //执行TestClass.GetList()方法时 //不会实际的去调用数据访问层 //而是用list的值作为GetList()方法的返回值(返回Hello、World、James集合) //这样以后每次测试GetList()中其他业务逻辑时,就不用初始化数据库数据,直接用 //Moq模拟的数据即可 test.GetList(); }

 

 3、

转载于:https://www.cnblogs.com/gossip/p/4100296.html

你可能感兴趣的文章
【Python】TF环境
查看>>
Apache下的子目录以及相关指令的说明
查看>>
jqury 插件
查看>>
通过计算机名访问linux
查看>>
模式识别开发之项目---计算机视觉目标检测的框架与过程
查看>>
关于rc.local
查看>>
网络协议之ftp---ftp 协议详解
查看>>
Java——UDP
查看>>
[RxJS] Transformation operator: bufferToggle, bufferWhen
查看>>
Tdrag
查看>>
No goals have been specified for this build 解决方案
查看>>
netty深入学习之中的一个: 入门篇
查看>>
Gradle 1.12用户指南翻译——第三十六章. Sonar Runner 插件
查看>>
基于HTTP 协议认证介绍与实现
查看>>
(原創) 如何寫一個加法器? (C/C++) (SystemC) (IC Design)
查看>>
Npoi导入导出Excel操作
查看>>
说说接口封装
查看>>
TCP/IP建立连接与终止连接
查看>>
asp.net 中页面缓存 ,数据源缓存,自定义缓存
查看>>
[九度][何海涛] 翻转单词顺序
查看>>