zoukankan      html  css  js  c++  java
  • Moq步步惊心之第一步

    我们在写Unit Test的时候是避免不了写Mock的。好的Mock库可以给我们极大的方便。在C++里我们有google mock库。在.NET里我们可以使用开源的Moq库。

    你可以通过这个链接来访问Moq的官方网站: http://code.google.com/p/moq/wiki/QuickStart

    这这篇文档里,我们将通过一个小的例子来学习如何使用Moq库。

    public interface IFoo
        {
            string GetClientName();
    
            void SetClientName(string strName);
    
        }
    
        class FooClient
        {
            public IFoo Foo { get; set; }
    
            public bool IsVIP()
            {
                return Foo.GetClientName().Equals("Bill Gates");
            }
    
            public void RenameClient()
            {
                Foo.SetClientName("Bill Gates");
            }
        }
    

     在代码里我们有一个interface, IFoo,同时还有另外一个类, FooClient。FooClient通过调用IFoo的方法来获取 或者设置值。

    在我们的Unit Test里,我们需要来test FooClient的两个方法。这个时候我们可以来Mock IFoo这个接口。

    [TestMethod]
            public void TestMoqInstalledSuccessfully()
            {
                //
                // TODO: Add test logic here
                //
                Mock<IFoo> foo = new Mock<IFoo>();
                foo.Setup(fw => fw.GetClientName()).Returns("Bill Gates");
    
                FooClient fooClient = new FooClient();
                fooClient.Foo = foo.Object;
    
                fooClient.IsVIP();
            }
    
            [TestMethod]
            public void Test_SetClientName()
            {
                //
                // TODO: Add test logic here
                //
                Mock<IFoo> foo = new Mock<IFoo>();
                
                FooClient fooClient = new FooClient();
                fooClient.Foo = foo.Object;
    
                fooClient.RenameClient();
    
                foo.Verify(fw => fw.SetClientName("Bill Gates"));
            }
    
  • 相关阅读:
    canvas 平移&缩放
    html + css + jquery实现简单的进度条实例
    jQuery Layer mobile 弹出层
    jQuery-全屏滚动插件【fullPage.js】API 使用方法总结
    Hive:select count(distinct)优化以及hive.groupby.skewindata
    Spark Application、Driver、Job、stage、task
    Spark 参数说明
    Xgboost小结与调参
    梯度下降算法过程详细解读
    机器学习杂记
  • 原文地址:https://www.cnblogs.com/xiaxi/p/2230289.html
Copyright © 2011-2022 走看看