RhinoMocks简单范例



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(20)).Return(1);

            Assert.AreEqual(1, ib1.Compute( 20));

            Assert.AreEqual(0, ib1.Compute(200));



            //接口.方法(无参数)

            IBBB ib2 = Rhino.Mocks.MockRepository.GenerateMock<IBBB>();

            ib2.Stub(x => x.GetNumber()).Return(2);

            Assert.AreEqual(2, ib2.GetNumber());



            //接口.属性

            IBBB ib3 = Rhino.Mocks.MockRepository.GenerateMock<IBBB>();

            ib3.Stub(x => x.Number).Return(3);

            Assert.AreEqual(3, ib3.Number);



            //类.方法

            BBB b4 = Rhino.Mocks.MockRepository.GenerateMock<BBB>();

            b4.Stub(x => x.Compute(20)).Return(4);

            Assert.AreEqual(4, b4.Compute(20));



            //任意参数,返回固定值

            IBBB ib5 = Rhino.Mocks.MockRepository.GenerateMock<IBBB>();

            ib5.Stub(x => x.Compute(Arg<int> .Is.Anything)).Return(5);

            Assert.AreEqual(5, ib5.Compute(9999));



            //条件参数,返回固定值

            IBBB ib6 = Rhino.Mocks.MockRepository.GenerateMock<IBBB>();

            ib6.Stub(x => x.Compute(Arg<int>.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<IBBB>();

            //设置.协同对象.预期行为

            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<IBBB>();

            //设置.协同对象.预期行为

            ib.Expect(x => x.Compute(20)).Return(1);



            AAA aaa = new AAA();

            aaa.Bbb = ib;

            aaa.Compute(11, 200);

            //判断协同对象.预期行为是否调用

            ib.VerifyAllExpectations();



        }



 

    }

}

 

你可能感兴趣的:(mock)