LindDotNetCore~Mock对实际应用中的意义
2018-01-11 13:42
411 查看
回到目录
便测试的测试方法。一个闹钟根据时间来进行提醒服务,如果过了下午5点钟就播放音频文件
提醒大家下班了,如果我们要利用真实的对象来测试的话就只能苦苦等到下午五点,然后把耳朵放在音箱
旁,我们应该利用mock对象[1] 来进行测试,这样我们就可以模拟控制时间了,而不用苦苦等待时钟转
到下午5点钟了。
对集成测试很有必要
体现了面向接口编程的重要性和必要性
一般将数据层进行Mock,通过对数据的模拟,来实现业务的准确性
而预期结果是我们从真实环境中通过输入参数产生的正式结果;在经过mock测试之后,我们把真实的预
期结果和测试产生的结果进行对比,这样可以验证业务逻辑的正确性!
下面业务层方法依赖于它,通过构造方法把它注入进来
通过上面代码我们完成的一个业务场景的mock过程,并最终调用了它的HandlerOrder方法,在这里我们与
数据库交互的IReport_CashFlowDao对象是被模拟出来的,我们可以为它提供多份模拟数据,以便更客观
的测试结果的正确性!
待续……
回到目录
Mock在单元测试里的意义
Mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。一个闹钟根据时间来进行提醒服务,如果过了下午5点钟就播放音频文件
提醒大家下班了,如果我们要利用真实的对象来测试的话就只能苦苦等到下午五点,然后把耳朵放在音箱
旁,我们应该利用mock对象[1] 来进行测试,这样我们就可以模拟控制时间了,而不用苦苦等待时钟转
到下午5点钟了。
为什么要用Mock
模拟接口的方法实现,方便测试,不需要额外建立新的类型对集成测试很有必要
体现了面向接口编程的重要性和必要性
一般将数据层进行Mock,通过对数据的模拟,来实现业务的准确性
输入参数和预期结果
我们可以定义两个对象,输入参数是我们给测试方法传递的原始数据,它通过计算逻辑生产新的结果;而预期结果是我们从真实环境中通过输入参数产生的正式结果;在经过mock测试之后,我们把真实的预
期结果和测试产生的结果进行对比,这样可以验证业务逻辑的正确性!
使用方法
//注册一个mock对象,并重写它的方法GetClosing,伪造它的返回结果 _report_CashFlowDao = new Mock<IReport_CashFlowDao>(); _report_CashFlowDao.Setup(p => p.GetClosing(270, new DateTime(2017, 10, 31))).Returns(() => { return _sheetReportList; });
下面业务层方法依赖于它,通过构造方法把它注入进来
_cashFlowService = new CashFlowService(_report_CashFlowDao.Object); _cashFlowService.HandleOrder(1139);
通过上面代码我们完成的一个业务场景的mock过程,并最终调用了它的HandlerOrder方法,在这里我们与
数据库交互的IReport_CashFlowDao对象是被模拟出来的,我们可以为它提供多份模拟数据,以便更客观
的测试结果的正确性!
待续……
回到目录
相关文章推荐
- DotNetCore跨平台~为Lind.DotNetCore框架添加单元测试的意义
- LindDotNetCore~职责链模式的应用
- .Net Core自动化部署之利用docker版jenkins部署dotnetcore应用的方法
- LindDotNetCore~docker里图像上生成中文乱码问题
- LindDotNetCore~Polly组件对微服务场景的价值
- LindDotNetCore~添加路由前缀
- LindDotNetCore~ISoftDelete软删除接口
- Java中三种注释及其实际应用的意义
- LindDotNetCore~授权中间件的介绍
- LindDotNetCore~入门基础
- LindDotNetCore~基于模块化注入的介绍
- stub和mock的实际应用
- LindDotNetCore~Aspect面向方面编程
- LindDotNetCore~Scheduling任务调度模块的介绍
- java中三种注释及其实际应用的意义
- LindDotNetCore~Ocelot实现微服务网关
- 单例模式的实际应用之生成数据指纹
- 浅说镜头的MTF值 及其对市场流行镜头的实际指导意义
- 符合主键在项目中的实际应用
- XSL 语言入门4 -- xsl实际项目应用示例1