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. 在工程中添加pch文件

    在Xcode6之前,新建一个工程的时候,系统会帮我们自动新建一个以工程名为名字的pch (precompile header)文件,在开发过程中,可以将那些整个工程都广泛使用的头文件包含在该文件下,编 ...

  2. java第六课 oop

    java oop 1.面向过程的结构化程序设计弊端:方法和数据结构都是毫无规律的定义在程序中任何位置        方法定义和方法要处理的数据结构也都是分开定义 2.对象:每new一次,就创建1个新对 ...

  3. integer和double的比较.

    Integer douVal=20; double parseDouble = Double.parseDouble(douVal.toString()); System.out.println(pa ...

  4. css3实现非矩形图片效果

    经常在网站上看到有一些非矩形的图片展示.在以前可能我会毫不犹豫的直接放上张处理好的图片.但是这样的话确实有些不太友好.每每需要换图的时候,都要去开图像处理软件也是蛮拼的.自从有了css3的选装,妈妈就 ...

  5. Good Bye 2015B

    Problem B:http://codeforces.com/contest/611/problem/B B. New Year and Old Property 题意:问输入的年份a到b中转化为二 ...

  6. Samza文档翻译 : Concepts

    此页介绍啊Samza的一些高层级概念. Streams Samza处理Streams(流).流由同一类型的不可变的消息组成.例如,一个流可以是对一个网站的所有点击,或者对一个数据库表的所有更新,或者一 ...

  7. Python 开源异步并发框架的未来

    http://segmentfault.com/a/1190000000471602 开源 Python 是开源的,介绍的这几个框架 Twisted.Tornado.Gevent 和 tulip 也都 ...

  8. 【NOIP 2016 总结】

    距离杯赛已经很久了,然而我现在才打总结.. 我好惨的说..两场才380... DAY 1 第一题 toy 送分题,模拟的时候+一下再mod一下就好. [当时打完这题就没再看一眼了,好方的说] #inc ...

  9. 最新版FreeTextBox(版本3.1.6)在ASP.Net 2.0中使用简介

    http://www.cnblogs.com/kflwz/articles/1337310.html   1.下载最新版FreeTextBox(版本3.1.6),解压   FreeTextBox 3. ...

  10. java:I/O 根据用户输入反馈信息

    import java.io.*; class userInputIO{ //Java中成员变量有默认初始化,也就是如果不显式设置初始值的话就会被初始化为其类型的默认值(0.false.null等). ...