zoukankan      html  css  js  c++  java
  • RhinoMock初探

    官方wiki:http://www.ayende.com/wiki/Rhino+Mocks.ashx

    =========================================

    接口Mock:

    来一段小代码

    static void Main(string[] args)
    {
        MockRepository mock = new MockRepository();
        ITest tmp = mock.StrictMock<ITest>();
        tmp.Execute();
    }

    很简单3行,ITest接口有一个Execute方法。

    执行结果是没有报异常,程序正常运行至结束。

    下面看看如何运用到单元测试中:

    public interface ITest
    {
        int Execute();
    }

    这里把接口方法修改一下。

    static void Main(string[] args)
    {
        MockRepository mock = new MockRepository();
        ITest tmp = mock.StrictMock<ITest>();
        Expect.Call(tmp.Execute()).Return(100);
        mock.ReplayAll();//重播,必须执行这一条
        Console.WriteLine("Return Value: "+tmp.Execute());
        mock.VerifyAll();//释放Mock仓库
        Console.ReadLine();
    
        //Result:
        //Return Value: 100
    }


    这样返回结果就是100了。

    ==================================

    让属性可以在外部修改:

    public interface ITest
    {
        int Id { get; set; }
        int Execute();
    }

    首先给接口增加Id属性

    然后调用一下PropertyBehavior

    static void Main(string[] args)
    {
        MockRepository mock = new MockRepository();
        ITest tmp = mock.StrictMock<ITest>();
        Expect.Call(tmp.Id).PropertyBehavior();
        tmp.Id = 10;//如果不用上面这句,属性外部修改会报错.
        mock.ReplayAll();
        Console.WriteLine("ID: "+ tmp.Id);
        mock.VerifyAll();
        Console.ReadLine();
    
        //Result:
        //ID: 10
    }
  • 相关阅读:
    动态投影
    我的比较差的初级的研究成果
    我最近的研究成果(IGeometry.Project and IGeometry.SpatialReference)
    mysql中的数据类型以及常见约束
    面向对象——多态
    java基础
    java中的异常(3)
    mysql中的数据类型
    面向对象——继承
    java中的异常(2)
  • 原文地址:https://www.cnblogs.com/hont/p/3234345.html
Copyright © 2011-2022 走看看