Mock对实在运用中的意义葡萄娱乐场

回来目录

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