using System;

namespace MockTest
{
public interface IBBB
{ int Number { get; } int Compute(int j); int GetNumber();
} public class BBB : IBBB
{
public virtual int Compute(int j)
{
throw new NotImplementedException();
} public int GetNumber()
{
throw new NotImplementedException();
} public int Number
{
get { throw new NotImplementedException(); }
}
} public class AAA
{
private IBBB _bbb; public IBBB Bbb
{
get { return _bbb; }
set { _bbb = value; }
} public AAA(IBBB a)
{
_bbb = a;
} public AAA() { } public int Compute(int i, int j)
{
return i + _bbb.Compute(j);
}
}
}

*******************************************************************************************************

using Microsoft.VisualStudio.TestTools.UnitTesting;
using MockTest;
using Rhino.Mocks; namespace UnitTest
{ [TestClass]
public class AAATest
{ [TestMethod]
public void RhinoStubTest()
{ //接口.方法(指定参数20,返回指定值1)
IBBB ib1 = Rhino.Mocks.MockRepository.GenerateMock<IBBB>();
ib1.Stub(x => x.Compute()).Return();
Assert.AreEqual(, ib1.Compute( ));
Assert.AreEqual(, ib1.Compute()); //接口.方法(无参数)
IBBB ib2 = Rhino.Mocks.MockRepository.GenerateMock<IBBB>();
ib2.Stub(x => x.GetNumber()).Return();
Assert.AreEqual(, ib2.GetNumber()); //接口.属性
IBBB ib3 = Rhino.Mocks.MockRepository.GenerateMock<IBBB>();
ib3.Stub(x => x.Number).Return();
Assert.AreEqual(, ib3.Number); //类.方法
BBB b4 = Rhino.Mocks.MockRepository.GenerateMock<BBB>();
b4.Stub(x => x.Compute()).Return();
Assert.AreEqual(, b4.Compute()); //任意参数,返回固定值
IBBB ib5 = Rhino.Mocks.MockRepository.GenerateMock<IBBB>();
ib5.Stub(x => x.Compute(Arg<int> .Is.Anything)).Return();
Assert.AreEqual(, ib5.Compute()); //条件参数,返回固定值
IBBB ib6 = Rhino.Mocks.MockRepository.GenerateMock<IBBB>();
ib6.Stub(x => x.Compute(Arg<int>.Is.LessThan())).Return();
Assert.AreEqual(, ib6.Compute());
Assert.AreEqual(, ib6.Compute()); } [TestMethod]
public void RhinoMockTest_DependentObject_IsBy_SuccessCall()
{ IBBB ib = Rhino.Mocks.MockRepository.GenerateMock<IBBB>();
//设置.协同对象.预期行为
ib.Expect(x => x.Compute()).Return(); AAA aaa = new AAA();
aaa.Bbb = ib;
aaa.Compute(,);
//判断协同对象.预期行为是否调用
ib.VerifyAllExpectations(); } [TestMethod]
[Microsoft.VisualStudio.TestTools.UnitTesting.ExpectedException(typeof(Rhino.Mocks.Exceptions.ExpectationViolationException))]
public void RhinoMockTest_DependentObject_IsBy_ErrorCall()
{ IBBB ib = Rhino.Mocks.MockRepository.GenerateMock<IBBB>();
//设置.协同对象.预期行为
ib.Expect(x => x.Compute()).Return(); AAA aaa = new AAA();
aaa.Bbb = ib;
aaa.Compute(, );
//判断协同对象.预期行为是否调用
ib.VerifyAllExpectations(); } }
}

RhinoMocks简单范例的更多相关文章

  1. 通过 UDP 发送数据的简单范例

    package j2se.core.net.udp; import java.io.IOException;import java.net.DatagramPacket;import java.net ...

  2. JDBC简单范例

    连接工具类 import java.sql.Connection; import java.sql.DriverManager; public class DBUtil { // 建立连接方法 pub ...

  3. Linux C 重定向简单范例

    //前言:我们知道printf()会将信息输出到stdout流,然后展示到屏幕上. //那么我们所实现的简单的重定向就可以将stdout指向一个文件,然后读写,这样就达到了重定向的目的. //code ...

  4. Linux学习-使用传统程序语言进行编译的简单范例

    单一程序:印出 HelloWorld 编辑程序代码,亦即原始码 [root@study ~]# vim hello.c <==用 C 语言写的程序扩展名建议用 .c #include <s ...

  5. Android自定义用户控件简单范例(一)

    一款优秀的移动应用需要具有自己独特统一的风格,通常情况下UI设计师会根据产品需求和使用人群的特点,设计整体的风格,界面的元素和控件的互效果.而原生态的Android控件为开发人员提供的是最基本的积木元 ...

  6. 简单范例php调用C# WebService

    准备工作:1. 安装IIS对于PHP的支持,看这里2. 要调用Web Service需要nusoap支持,只要弄个nusoap.php就可以了,把它放在要运行的php文件能够引用的地方,比如我放在同一 ...

  7. golang rpc 简单范例

    RPC(Remote Procedure Call Protocol)--远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. 它的工作流程如下图:   go ...

  8. tushare获取的数据与mysql数据库交互简单范例

    #!/usr/bin/python2.7# -*- coding: UTF-8 -*- import tushare as tsimport pandas as pdfrom sqlalchemy i ...

  9. Android自定义用户控件简单范例(二)

    对于完全由后台定制的控件,并不是很方便其他人的使用,因为我们常常需要看到控件放到xml界面上的效果,并根据效果进行布局的调整,这就需要一个更加标准的控件制作流程: 我们的自定义控件和其他的控件一样,应 ...

随机推荐

  1. javascript高级编程笔记06(面相对象2)

    1)  构造函数模式 es中的构造函数可以用来创建特定类型的对象,像Object和Array这样的原生构造函数,在运行时会自动出现在执行环境中,此外,也可以创建自定义的构造函数,从而定义自定义对象类型 ...

  2. Delphi XE5 android 捕获几个事件

    以下代码能监控到以下几个事件: FinishedLaunching     BecameActive     WillBecomeInactive    EnteredBackground    Wi ...

  3. select count(*)和select count(1)的区别 (转)

    A 一般情况下,Select Count (*)和Select Count(1)两着返回结果是一样的 假如表沒有主键(Primary key), 那么count(1)比count(*)快, 如果有主键 ...

  4. maven添加jar包依赖

    maven的东西使用了一段时间,但是每次使用都多少有点含糊,所以总结一下. 目前主要使用是在jar包的控制上 原理: 在本地,指定一个文件夹,便是maven的仓库,maven会从远程的中央仓库中下载你 ...

  5. 快速配置Ehcache

    1. 编写ehcache.xml文件,将该文件放置于classpath路径下.代码如下: <?xml version="1.0" encoding="UTF-8&q ...

  6. hdu 4336 Card Collector 容斥原理

    读完题目就知道要使用容斥原理做! 下面用的是二进制实现的容斥原理,详见:http://www.cnblogs.com/xin-hua/p/3213050.html 代码如下: #include< ...

  7. c++ string c_str() 和data()区别

    看下面的英文解释: const char* c_str ( ) const;Get C string equivalentGenerates a null-terminated sequence of ...

  8. nginx静态资源分离部署

    修改nginx.conf文件,用于nginx处理静态资源. 主要配置如下(在server配置中加入location配置即可): server { listen 80; server_name 123. ...

  9. DELPHI下API简述(1800个API)

    DELPHI下API简述 http://zero.cnbct.org/show.asp?id=144 auxGetDevCaps API 获取附属设备容量 auxGetNumDevs API 返回附属 ...

  10. 93. Restore IP Addresses

    题目: Given a string containing only digits, restore it by returning all possible valid IP address com ...