Mock对实在运用中的意义

by admin on 2019年3月15日

回到目录

归来目录

亚洲必赢手机,Mock在单元测试里的意思

Mock测试便是在测试进度中,对于有个别不便于构造可能不便于取得的靶子,用叁个虚拟的对象来创造以
便测试的测试方法。二个闹钟听闻时间来拓展提示服务,要是过了下午5点钟就播放音频文件
唤醒大家下班了,借使大家要运用真实的对象来测试的话就只可以苦苦等到早上五点,然后把耳朵放在音箱
旁,大家应有利用mock对象[1]
来开始展览测试,这样大家就能够效仿控制时间了,而不用苦苦等待时钟转
到下午5点钟了。

Mock在单元测试里的含义

Mock测试正是在测试进度中,对于某个不便于构造恐怕不易于取得的对象,用二个虚构的目的来成立以
便测试的测试方法。1个闹钟基于时间来进展提示服务,要是过了下午5点钟就播放音频文件
提示我们下班了,借使大家要使用真实的对象来测试的话就只可以苦苦等到中午五点,然后把耳朵放在音箱
旁,大家应当利用mock对象[1]
来拓展测试,那样我们就能够效仿控制时间了,而不用苦苦等待时钟转
到下午5点钟了。

缘何要用Mock

  1. 效仿接口的法子落成,方便测试,不要求卓殊建立新的品种
  2. 对并入测试很有必不可少
  3. 反映了面向接口编程的重要性和须要性
  4. 一般将数据层实行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);
    

    通过上边代码大家成功的3个作业场景的mock进程,并最终调用了它的HandlerOrder方法,在此地大家与
    数据库交互的IReport_CashFlowDao对象是被模仿出来的,大家能够为它提供多份模拟数据,以便更客观
    的测试结果的没错!
    待续……
    回来目录

为啥要用Mock

  1. 依傍接口的艺术完成,方便测试,不须要额外建立新的类型
  2. 对并入测试很有须要
  3. 反映了面向接口编制程序的首要性和要求性
  4. 相似将数据层举办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);
    

    因此地点代码大家达成的1个事情场景的mock进程,并最后调用了它的HandlerOrder方法,在此间我们与
    数据库交互的IReport_CashFlowDao对象是被模仿出来的,大家能够为它提供多份模拟数据,以便更客观
    的测试结果的不错!
    待续……
    回去目录

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图