• JustMock Lite (Free Mocking Framework For .net)


    1. 通过 Nuget 安装

         2.   官网下载(官网不行点这里)

         3.   帮助文档

    商业版和免费版区别概览

         MockingContainer

    测试类准备:一般来说也是业务类


        public class ClassUnderTest
        {
            private IFirstDependency firstDep;
            private ISecondDependency secondDep;
    
            public ClassUnderTest(IFirstDependency first, ISecondDependency second)
            {
                this.firstDep = first;
                this.secondDep = second;
            }
    
            public IList<object> CollectionMethod()
            {
                var firstCollection = firstDep.GetList();
    
                return firstCollection;
            }
    
            public string StringMethod()
            {
                var secondString = secondDep.GetString();
    
                return secondString;
            }
        }
    
        public interface IFirstDependency
        {
            IList<object> GetList();
        }
    
        public interface ISecondDependency
        {
            string GetString();
        }
    

      单元测试


            [TestMethod]
            public void ShouldMockDependenciesWithContainer()
            {
                // ARRANGE
                // Creating a MockingContainer of ClassUnderTest. 
                // To instantiate the system uder test (the container) you should use the Instance property 
                // For example: container.Instance. 
                var container = new MockingContainer<ClassUnderTest>();
    
                string expectedString = "Test";
    
                // Arranging: When the GetString() method from the ISecondDependecy interface 
                //              is called from the container, it should return expectedString. 
                container.Arrange<ISecondDependency>(
                   secondDep => secondDep.GetString()).Returns(expectedString);
    
                // ACT - Calling SringMethod() from the mocked instance of ClassUnderTest
                var actualString = container.Instance.StringMethod();
    
                // ASSERT
                Assert.AreEqual(expectedString, actualString);
            }
    

      需要说明的是MockingContainer构造函数有一个可选参数AutoMockSettings,其中AutoMockSettings最主要的一个作用的是当ClassUnderTest有多个构造函数时,指定合适的构造函数来实例化对象

         当业务类中有一个无参构造函数,一个有参构造函数,在没有设置AutoMockSettings的情况下会默认执行无参构造函数,

        可以像下面这样来指定需要的构造函数

            AutoMockSettings settings = new AutoMockSettings
                {
                    ConstructorArgTypes = new Type[]{
                      typeof(IFirstDependency),typeof(ISecondDependency)
                    }
                };
    
                // ARRANGE
                // Creating a MockingContainer of ClassUnderTest. 
                // To instantiate the system uder test (the container) you should use the Instance property 
                // For example: container.Instance. 
                var container = new MockingContainer<ClassUnderTest>(settings);
    

      

         

  • 相关阅读:
    ST表
    容斥原理
    扩展欧几里得算法
    C++ 快读快写模板
    单例模式的装饰器实现
    使用python+poco+夜神模拟器进行自动化测试
    使用Airtest超快速开发App爬虫
    mysql优化
    在浏览器中输入URL并回车后都发生了什么?
    第一次博客作业
  • 原文地址:https://www.cnblogs.com/LittleFeiHu/p/4456843.html
Copyright © 2020-2023  润新知