Mock对实际选择中的意义

回到目录

重返目录

Mock在单元测试里的意义

Mock测试就是在测试进度中,对于有个别不不难构造只怕不不难获得的靶子,用一个虚构的对象来创立以
便测试的测试方法。三个闹钟依照时间来进行提示服务,若是过了下午5点钟就播放音频文件
提醒咱们下班了,如若我们要使用真实的目标来测试的话就只可以苦苦等到上午五点,然后把耳朵放在音箱
旁,大家相应采用mock对象[大红鹰葡京会,1]
来进展测试,那样大家就能够效仿控制时间了,而不用苦苦等待时钟转
到下午5点钟了。

Mock在单元测试里的意义

Mock测试正是在测试进程中,对于有个别不易于构造只怕不易于获得的指标,用贰个虚构的指标来成立以
便测试的测试方法。几个闹钟依据时间来实行提示服务,即便过了下午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);
    

    因而地方代码大家完毕的1个事情场景的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);
    

    经过地点代码我们做到的三个业务场景的mock进程,并最后调用了它的HandlerOrder方法,在此处大家与
    数据库交互的IReport_CashFlowDao对象是被模仿出来的,我们能够为它提供多份模拟数据,以便更客观
    的测试结果的科学!
    待续……
    回到目录

相关文章

admin

网站地图xml地图