Mock对实在运用中的意义

回来目录

回到目录

Mock在单元测试里的意思

Mock测试正是在测试进度中,对于有些不便于构造只怕不便于获得的靶子,用三个虚拟的对象来创制以
便测试的测试方法。3个闹钟根据时间来开始展览提示服务,假诺过了大红鹰葡京会,下午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);
    

    因而地方代码大家实现的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);
    

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

admin

网站地图xml地图