LindDotNetCore~Mock对实在用中之义。LindDotNetCore~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对象是被法下的,我们好啊它提供多份模拟数据,以便更客观
    的测试结果的不错!
    待续……
    回去目录

相关文章

admin

网站地图xml地图