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. 类似nike+、香蕉打卡的转场动画效果-b

    首先,支持并感谢@wazrx 的 http://www.jianshu.com/p/45434f73019e和@onevcat 的https://onevcat.com/2013/10/vc-tran ...

  2. C#设计模式学习资料--观察者模式

    http://www.cnblogs.com/promise-7/archive/2012/05/14/2500759.html http://www.cnblogs.com/zhenyulu/art ...

  3. python 读写 Excel文件

    最近用python处理一个小项目,其中涉及到对excel的读写操作,通过查资料及实践做了一下总结,以便以后用. python读写excel文件要用到两个库:xlrd和xlwt,首先下载安装这两个库. ...

  4. 解决eclipse“copy项目重命名后重新发布,项目名在地址栏仍然是原来的项目名”的问题

    任务描述:复制项目spring_user并重命名为spring_user_test 一.通过按F2和以下方式可以修改目标项目在workspace的名字 点击项目右键选择properties,输入关键字 ...

  5. Educational Codeforces Round 11

    A. Co-prime Array http://codeforces.com/contest/660/problem/A 题意:给出一段序列,插进一些数,使新的数列两两成互质数,求插最少的个数,并输 ...

  6. spoj 416

    又臭又长的烂代码 ...... #include <iostream> #include <cstdio> #include <cstring> #include ...

  7. 让wordpress投稿作者在后台只看到自己的文章

    wordpress支持多作者撰写,让更多的人参与网站内容的创建是个不错的想法,UGC(User-generated content)使网站主题更丰富,不同的内容吸引不同的受众,一个好的网站应该多产生U ...

  8. Scala学习——基础篇

    [<快学Scala>笔记] 一.基础 1.变量val 标志符: 声明常量: 如,val answer = 1var 标志符:声明变量: 类型推断:变量的类型由scala根据初始化变量的表达 ...

  9. hdu 1847 Good Luck in CET-4 Everybody! 博弈论

    方法一:找规律,很容易知道 #include<stdio.h> int main(){ int n; while(scanf("%d",&n)!=EOF){ p ...

  10. [itint5]单词游戏

    http://www.itint5.com/oj/#36 此题在数据大些,而且全是A的情况下会超时(因为要匹配到很后面才false).通过利用数组本身作为visited标示,而且使用string引用, ...