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对象是被模仿出来的,大家得以为它提供多份模拟数据,以便更合理
    的测试结果的没错!
    待续……
    回去目录