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. C# Windows - Button 控件

    .Net Framework提供了一个派生于Control的类System.Windows.Forms.ButtonBase,它实现了Button控件所需的基本功能. System.Windows.F ...

  2. VS2008的默认打开重置为VS2008

  3. [转载]js 遍历数组对象

    有一个JSON数组如下 all = {"error":0,"content":[{"name":"北京","v ...

  4. 自助Linux之问题诊断工具strace

    转  http://www.cnblogs.com/bangerlee/archive/2012/02/20/2356818.html 引言 “Oops,系统挂死了..." “Oops,程序 ...

  5. Navicat for mysql 远程连接 mySql数据库10061、1045错误问题 (转)

    远程使用Navicat for mysql 客户端软件连接 mySql数据时,连接出现 2003-Can’t connect to MySQL on ’192.168.1.2’(10061)错误时,是 ...

  6. 酷摄影:关于梦 - Miki takahashi

    这组摄影来自于日本东京摄影师 Miki takahashi 是一组双重曝光摄影,分开看也许很平常,但是结合在一起却非常有韵味. [gallery]

  7. 电商安全无小事,如何有效地抵御 CSRF 攻击?

    现在,我们绝大多数人都会在网上购物买东西.但是很多人都不清楚的是,很多电商网站会存在安全漏洞.比如乌云就通报过,国内很多家公司的网站都存在 CSRF 漏洞.如果某个网站存在这种安全漏洞的话,那么我们在 ...

  8. Android 控制ScrollView滚动到底部

    scrollView.fullScroll(ScrollView.FOCUS_DOWN);滚动到底部 scrollView.fullScroll(ScrollView.FOCUS_UP);滚动到顶部 ...

  9. dtp--eclipse的安装数据源管理的一个插件的安装方法

    1.  下载eclipse dtp 插件 http://download.eclipse.org/datatools/updates/1.11 help——>install new softwa ...

  10. C++创建一个动态链接库工程

    前话 在我们安装一些软件时,进入软件安装目录会经常看到.dll格式文件,系统system目录也存在许多dll文件 在软件游戏(window平台)更新的时候,很大部分是下载dll文件 所以会好奇这是什么 ...