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 (); ib1.Stub(x => x.Compute(20)).Return(1); Assert.AreEqual(1, ib1.Compute( 20)); Assert.AreEqual(0, ib1.Compute(200)); //接口.方法(无参数) IBBB ib2 = Rhino.Mocks.MockRepository.GenerateMock (); ib2.Stub(x => x.GetNumber()).Return(2); Assert.AreEqual(2, ib2.GetNumber()); //接口.属性 IBBB ib3 = Rhino.Mocks.MockRepository.GenerateMock (); ib3.Stub(x => x.Number).Return(3); Assert.AreEqual(3, ib3.Number); //类.方法 BBB b4 = Rhino.Mocks.MockRepository.GenerateMock (); b4.Stub(x => x.Compute(20)).Return(4); Assert.AreEqual(4, b4.Compute(20)); //任意参数,返回固定值 IBBB ib5 = Rhino.Mocks.MockRepository.GenerateMock (); ib5.Stub(x => x.Compute(Arg .Is.Anything)).Return(5); Assert.AreEqual(5, ib5.Compute(9999)); //条件参数,返回固定值 IBBB ib6 = Rhino.Mocks.MockRepository.GenerateMock (); ib6.Stub(x => x.Compute(Arg .Is.LessThan(10))).Return(6); Assert.AreEqual(6, ib6.Compute(9)); Assert.AreEqual(0, ib6.Compute(11)); } [TestMethod] public void RhinoMockTest_DependentObject_IsBy_SuccessCall() { IBBB ib = Rhino.Mocks.MockRepository.GenerateMock (); //设置.协同对象.预期行为 ib.Expect(x => x.Compute(20)).Return(1); AAA aaa = new AAA(); aaa.Bbb = ib; aaa.Compute(11,20); //判断协同对象.预期行为是否调用 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 (); //设置.协同对象.预期行为 ib.Expect(x => x.Compute(20)).Return(1); AAA aaa = new AAA(); aaa.Bbb = ib; aaa.Compute(11, 200); //判断协同对象.预期行为是否调用 ib.VerifyAllExpectations(); } }}