使用Ninject+Moq在单元测试中抽象数据访问层
2014-11-15 21:46
260 查看
一、测试方法的业务逻辑时,通常都需要从数据库读取测试数据,但是每次初始化数据库数据都很麻烦,也会影响到其它业务对数据的访问,怎样抽象数据访问层呢?就是用Moq去模拟数据访问的逻辑
二、步骤如下
2.1 定义数据访问接口和实现
2.2 使用Ninject维护接口和实现的关系,并在业务类的构造函数中进行注入
a) 初始化Ninject
b) 业务类(构造函数注入)
2.3 在单元测试中使用Moq抽象模拟数据访问层逻辑
3、源码下载
二、步骤如下
2.1 定义数据访问接口和实现
public interface IDBAccess { List<string> GetList(string request); } public class DBAccessImp : IDBAccess { public List<string> GetList(string request) { throw new NotImplementedException(); } }
2.2 使用Ninject维护接口和实现的关系,并在业务类的构造函数中进行注入
a) 初始化Ninject
static void Main(string[] args) { //创建Ninject内核实例 IKernel ninjectKernel = new StandardKernel(); //绑定接口到实现了该接口的类 ninjectKernel.Bind<IDBAccess>().To<DBAccessImp>(); }
b) 业务类(构造函数注入)
public class TestClass { private IDBAccess db = null; public TestClass(IDBAccess db) { this.db = db; } public List<string> GetList() { //这里可认为是调用数据访问层的实现代码 var response = this.db.GetList("Hello"); return response; } }
2.3 在单元测试中使用Moq抽象模拟数据访问层逻辑
[TestCategory("测试分类")] [TestMethod] public void GetListTest() { var mockDb = new Mock<IDBAccess>(); var list = new List<string>(); list.Add("Hello"); list.Add("World"); list.Add("James"); //设置请求参数;返回参数等 mockDb.Setup(m => m.GetList(It.IsAny<string>())) .Returns(list); TestClass test = new TestClass(mockDb.Object); //执行TestClass.GetList()方法时 //不会实际的去调用数据访问层 //而是用list的值作为GetList()方法的返回值(返回Hello、World、James集合) //这样以后每次测试GetList()中其他业务逻辑时,就不用初始化数据库数据,直接用 //Moq模拟的数据即可 test.GetList(); }
3、源码下载
相关文章推荐
- 如何使用MOQ进行单元测试
- 转使用Moq让单元测试变得更简单
- asp.net mvc3 对HttPost来的表单使用moq进行单元测试
- [转:Pro ASP.NET MVC 5中的例子]使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore
- 【ASP.Net MVC3 】使用Moq让单元测试变得更简单
- 使用Moq修改默认的ASP.NET MVC项目单元测试
- 【MVC 4】4.MVC 基本工具(Visual Studio 的单元测试、使用Moq)
- 使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(十一)
- 使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(十)
- 单元测试时使用Ninject的小问题
- 【ASP.Net MVC3 】使用Moq让单元测试变得更简单
- 使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(四)
- 使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(三)
- VS2012下使用Moq进行单元测试
- 使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(七)
- 【ASP.Net MVC3 】使用Moq让单元测试变得更简单
- 使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore
- 使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(六)
- 使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore
- 单元测试中使用Moq对EF的DbSet进行mock