RhinoMock入门(2)——Mock仓库,期望

简介: 这里介绍RhinoMock中的常用的类。   (一)MockRepository RhinoMock的主要的类,是Mock仓库,用于创建mock对象,录制,重放,验证等。 (1)创建Mock MockRepository mock = new MockRepository();  (2)创建mock对象 Mock的目的就是创建mock对象,然后期望,录制重放等。

这里介绍RhinoMock中的常用的类。

 

(一)MockRepository

RhinoMock的主要的类,是Mock仓库,用于创建mock对象,录制,重放,验证等。

1)创建Mock

MockRepository mock  =   new  MockRepository();

 2)创建mock对象

Mock的目的就是创建mock对象,然后期望,录制重放等。创建mock对象有很多方法,以前的版本中通过:

 

MockRepository fac  =   new  MockRepository();
var customer 
=  fac.CreateMock < ICustomer > ();

来进行,CreateMock方法已经过时,工厂方法来进行:

MockRepository fac  =   new  MockRepository();
var customer 
=  fac.StrictMock < ICustomer > ();

 

也可以通过静态工厂方法来创建:

var customer  =  MockRepository.GenerateMock < ICustomer > ();

 

3)录制

所有的mock框架都使用Record/Replay模式,但有些是显示的,有些是隐式的,而RhinoMock就是显示的。

·Record/Replay传统的录制与重放:

[Test]
public   void  TestRR()
{

    MockRepository fac 
=   new  MockRepository();
    var customer 
=  fac.StrictMock < ICustomer > ();
 

    customer.Expect(p 
=>  p.ShowTitle( "" )).Return( "" );
    customer.Replay();
    Assert.AreEqual(
"" , customer.ShowTitle( "" ));
}

 

·RecordUsing方式

public   void  TestRR()
{
    MockRepository fac 
=   new  MockRepository();
    var customer 
=  fac.StrictMock < ICustomer > ();
    
using  (fac.Record())
    {
       customer.Expect(p 
=>  p.ShowTitle( "" )).Return( "" );
    }

    Assert.AreEqual(
"" , customer.ShowTitle( "" ));
}

 

 

·通过静态工厂方法创建mock对象:

public   void  TestRR()
{
    var customer 
=  MockRepository.GenerateMock < ICustomer > ();
    customer.Expect(p 
=>  p.ShowTitle( "" )).Return( "" );
    Assert.AreEqual(
"" , customer.ShowTitle( "" ));
}

 

4)验证

用于验证mock对象的期望是否成立。

·Verify,用于验证mock对象的所有期望是否满足

·VerifyAll,用于验证所有mock对象的所有期望是否满足

 

(二)Expect

为有返回值的类的方法设置期望

Call:为方法或属性提供期望

·Call<T>(T ignored)

·Call(Action actionToExecute)

 

例:

[Test]
public   void  TestCall()
{
    MockRepository mock 
=   new  MockRepository();
    var mockObject 
=  mock.StrictMock < ICustomer > ();
    Expect.Call(mockObject.ShowTitle(
string .Empty)).Return( " 不能为空 " );

    Expect.Call(mockObject.Unid).Return(
30 );
    mock.ReplayAll();
    Assert.AreEqual(
" 不能为空 " , mockObject.ShowTitle( "" ));
    Assert.AreEqual(
30 , mockObject.Unid);
}

 

 

lambda表达式方式

[Test]
public   void  TestCall()
{
    MockRepository mock 
=   new  MockRepository();
    var mockObject 
=  mock.StrictMock < ICustomer > ();
    mockObject.Expect(p 
=>  p.ShowTitle( "" )).Return( " 不能为空 " );
    mockObject.Expect(p 
=>  p.Unid).Return( 30 );

    mock.ReplayAll();
    Assert.AreEqual(
" 不能为空 " , mockObject.ShowTitle( "" ));
    Assert.AreEqual(
30 , mockObject.Unid);
}

 

 

再来看Using方式

[Test]
public   void  TestCallUsing()
{
    MockRepository mock 
=   new  MockRepository();
    var mockObject 
=  mock.StrictMock < ICustomer > ();

 

    
using  (mock.Record())
    {
       mockObject.Expect(p 
=>  p.ShowTitle( "" )).Return( " 不能为空 " );
       mockObject.Expect(p 
=>  p.Unid).Return( 30 );
    }   

    Assert.AreEqual(
" 不能为空 " , mockObject.ShowTitle( "" ));
    Assert.AreEqual(
30 , mockObject.Unid);
}

 

博客园大道至简

http://www.cnblogs.com/jams742003/

转载请注明:博客园

目录
相关文章
|
6月前
阿萨学工具:Apifox 用Mock.js写高级Mock的期望
阿萨学工具:Apifox 用Mock.js写高级Mock的期望
170 0
|
XML 前端开发 测试技术
【前端小技巧】如何使用 Eolink Apilkit 调用 Mock ?
在开发过程中,进度比较赶的情况下,前端人员当页面写完时,后台的接口还没写完,等要交付的时候后端才把接口给你,这个时候就很尴尬。 这个时候 Mock 就可以很好的解决这个问题,前端团队可以在 API 还没开发完成的情况下,借助 Mock API 实现预对接,加速开发进程。测试团队可以通过 Mock API 解决不必要的系统,完成集成测试。 Eolink Apikit 为前端工程师提供 API 文档管理,快速接口测试,以及 Mock API 创建与调用,及查看文档变更历史的能力。有助于前端工程师快速查看 API 文档详情与历史记录,快速生成和使用 Mock API 提前进行页面效果验证。
65 0
|
3月前
|
Java 测试技术
SpringBoot单元测试快速写法问题之区分链路环节是否应该被Mock如何解决
SpringBoot单元测试快速写法问题之区分链路环节是否应该被Mock如何解决
|
4月前
|
测试技术
详解单元测试问题之Mockito中添加或更新打桩列表如何解决
详解单元测试问题之Mockito中添加或更新打桩列表如何解决
58 3
|
4月前
|
监控 JavaScript Serverless
函数计算产品使用问题之如何部署一个未构建的Vue项目,并实现从Gitee仓库自动同步更新
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
5月前
|
前端开发 Java 开发工具
JeecgBoot v3.7.0 all 版本发布,前后端合并一个仓库
合并前端源码和后端源码到一个 git 仓库,修复几个已知严重 bug。
65 2
jira学习案例3-对比常见mock方案
jira学习案例3-对比常见mock方案
82 0
jira学习案例3-对比常见mock方案
|
监控 jenkins 测试技术
搭建Vue3组件库:第九章 持续集成CI:基于GitHub的Action回归验证
本章介绍一下github的工作流的持续集成服务。
299 0
搭建Vue3组件库:第九章 持续集成CI:基于GitHub的Action回归验证
学习笔记jira项目4-对比常见mock方案
学习笔记jira项目4-对比常见mock方案
90 0
学习笔记jira项目4-对比常见mock方案
|
数据库
jira项目笔记6-Mock数据配置
jira项目笔记6-Mock数据配置
99 0