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. git初探

    1 Linux下Git和GitHub环境的搭建 第一步: 安装Git,使用命令 "sudo apt-get install git" 第二步: 到GitHub上创建GitHub帐号 ...

  2. tomcat 配置虚拟路径

    把图片或者其他的文件传到webapps以外的目录 <Context docBase= "e:\image\"  path= "/uploads"  rel ...

  3. java.lang.NoSuchMethodError: javaxservlet.http.HttpServletRequest.isAsyncStarted()Z

    鸣谢网址:http://stackoverflow.com/questions/25940571/java-lang-nosuchmethoderror-javaxservlet-http-https ...

  4. zTree -- jQuery 树插件

    http://www.ztree.me/v3/main.php#_zTreeInfo http://plugins.jquery.com/zTree.v3/ 例子:http://www.ztree.m ...

  5. iOS开发笔记--宏定义的黑魔法 - 宏菜鸟起飞手册

    宏定义在C系开发中可以说占有举足轻重的作用.底层框架自不必说,为了编译优化和方便,以及跨平台能力,宏被大量使用,可以说底层开发离开define将寸步难行.而在更高层级进行开发时,我们会将更多的重心放在 ...

  6. xcode 开发ios兼容性问题的上下黑边 和 coco2d-x 游戏分辨率适配 ResolutionPolicy::FIXED_WIDTH 都会引起上下黑边问题!!!

    1:Xcode6在iPhone5+iOS7模拟器上编译,上下有黑边问题 问题描述: Xcode6环境下,对iPhone5或iPhone5s模拟器,在iOS7或iOS7.1下运行,屏幕上下有黑边.在iO ...

  7. linux xxd 命令

    http://www.cnblogs.com/openix/archive/2012/04/23/2466320.html xxd -i dht.jpg dht.h

  8. MSSQLServer基础02(SQL语句入门(脚本、命令))

    SQL 全名是结构化查询语言(Structured Query Language),是关系数据库管理系统的标准语言 SQL语句是和DBMS“交谈”专用的语句,不同DBMS都认SQL语法. SQL语句中 ...

  9. JavaEE的13种核心技术

    Java的大方向就是JavaEE,JavaEE不仅仅是socket编程,具体包括13中核心技术. JavaEE平台由一整套服务(Services).应用程序接口(APIs)和协议构成,它对开发基于We ...

  10. fedora之防火墙

    通过iptables的设置可以学一些东西 从配置菜单关闭防火墙是不起作用的,索性在安装的时候就不要装防火墙查看防火墙状态:/etc/init.d/iptables status暂时关闭防火墙:/etc ...