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地图