澳门蒲京Mock对实在运用中的意义,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);
    

    通过上边代码大家成功的一个政工场景的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对象是被模仿出来的,大家得以为它提供多份模拟数据,以便更合理
    的测试结果的科学!
    待续……
    重回目录