LindDotNetCore~Mock对实际应用中的意义
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对象是被模拟出来的,我们可以为它提供多份模拟数据,以便更客观
的测试结果的正确性!
待续……
回到目录
LindDotNetCore~Mock对实际应用中的意义的更多相关文章
- 思考卷积神经网络(CNN)中各种意义
原文:https://blog.csdn.net/aimreant/article/details/53145063 思考卷积神经网络(CNN)中各种意义 只是知道CNN是不够,我们需要对其进行解剖, ...
- “全栈2019”Java第十六章:下划线在数字中的意义
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Bootstrap4中栅格系统CSS中 col-sm-* col-md-* col-lg-*的意义以及当其同时具有col-xs-* col-sm-* col-md-* col-lg-*的含义
根据Bootstrap--Grid 中 col-sm-* col-md-* col-lg-* col-xl-*的意义: .col-sm-* 小屏幕 手机 (≥ 576px) .col-md-* 中等屏 ...
- Servlet-斜杠在web中不同意义
Servlet-斜杠在web中不同意义 在web中 / 斜杠是一种绝对路径 / 斜杠 如果被浏览器解析,得到的地址是:http://ip/port/ / 斜杠 如果被服务器解析,得到的地址是:http ...
- C#中[JsonIgnore]意义
字面意义是忽略序列化,就是当字段在序列化时,被[JsonIgnore]标记了的字段将被忽略序列化 序列化输出中使用Id和Name属性,但我绝对不会对AlternateName和Color感兴趣.我用[ ...
- 谈谈service层在mvc框架中的意义和职责
mvc框架由model,view,controller组成,执行流程一般是:在controller访问model获取数据,通过view渲染页面. mvc模式是web开发中的基础模式,采用的是分层设计, ...
- 小讲堂:在线编辑在Mobox文档管理软件中的意义
今天我们来讨论一下,mobox文档管理软件中的在线编辑的这个功能,相信这个功能是用户在日常的文档维护中非常需要的. 文档管理软件的诸多功能中,在线编辑是一块很重要的功能点,因为在线编辑可以说是提高工作 ...
- Arcgis Engine axMapControl1.get_layer(index)中index意义
像 ILayer pLayer = this.axMapControl1.get_Layer(0); 意思是获取axMapControl1中的第一个图层,复制给pLayer.
- js 中//<![CDATA[ 意义
CDATA内部所有东西都会被解析器忽略,加入文本中包含了大量< 和 $符号,就像编程中经常出现的情况一样,那么这个元素就可以被定义为一个CDATA部分 ,CDATA 区段开始于 "&l ...
随机推荐
- 》》3D轮播
* { margin: 0; padding: 0; } .slide { position: absolute; top: calc(50% - 150px); left: calc(50% - 3 ...
- 行编辑距离Edit Distance——动态规划
题目描写叙述: 给定一个源串和目标串.可以对源串进行例如以下操作: 1. 在给定位置上插入一个字符 2. 替换随意字符 3. 删除随意字符 写一个程序.返回最小操作数,使得对源串进行这些操作后等 ...
- 我理解的malloc()和free()。
关于malloc和free这两个函数,malloc的使用方法演示样例:int *p=(int *)malloc(2*sizeof(int)); 它表示在堆中开辟一块大小为2*sizeof(int)的一 ...
- 趋势科技PC-cillin2015,你来公測我发奖!
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaXF1c2hp/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/d ...
- AspNet Core Api Restful +Swagger 实现微服务之旅(四)
这几天没更新,项目框架也是在发展阶段,这几天学习配置了一遍Apollo和RabbitMQ 等到放到框架上之后我整理一下到时候把心得写出来相互学习. 接着上一篇的内容 (2) 程序错误时 返回数据格 ...
- IDEA Translation插件中有道智云(有道翻译)应用ID,密钥申请教程
登录链接 该登录登录,该注册注册(信息随意填写) 自然语言翻译=>翻译实例=>创建实例(信息随意填写) QQ截图20170701231552.png 应用管理=>我的应用=>创 ...
- linux下脚本做成服务
一.脚本做成服务 1.把启动脚本复制到 /etc/init.d目录中 2.脚本内容 xxxx代表jar包名称 #!/usr/bin/env bash # chkconfig: 2345 20 80 # ...
- Linux下添加源的几种方法
sudo add-apt-repository xxxxxxx sudo gedit /etc/apt/sources.list然后把源粘贴进去,保存,最后shell输入sudo apt-get u ...
- 使用Vue2完成“小红书” app
小红书项目说明 整体页面格调.功能和原版 app 无限接近.具体页面细节可以下载 “小红书” app查看. 图片素材:https://pan.baidu.com/s/1qYOcx7e 整体要求: · ...
- 【WebGL】《WebGL编程指南》读书笔记——第6章
一.前言 最近重感冒发烧,妈蛋好难受,请假了3天,驾校也没去,简直僵硬!今天继续WebGL的学习. 二.正文 A. GLSL支持两种数据值类型: 整数型(int)与浮点型( ...