zoukankan      html  css  js  c++  java
  • MOQ TIP2:匹配参数

    在MOQ中,It用于添加参数约定,它有以下几个方法:

    Is<T>:匹配确定的给定类型

    IsAny<T>:匹配给定的任何值

    IsInRange<T>:匹配给定类型的范围

    IsRegex<T>:正则匹配

    还是以上文中的例子:

        public abstract class CounterBase
        {
            public abstract int CountArgs(int a, int b);
        }

    测试代码:

                Mock<CounterBase> mock = new Mock<CounterBase>();
                mock.Setup(arg => arg.CountArgs(It.IsAny<int>(), It.IsAny<int>())).Returns(3);
                Assert.AreEqual(3, mock.Object.CountArgs(1, 2));
                Assert.AreEqual(3, mock.Object.CountArgs(4, 6));

    我们可以看到,这段代码完成的意思是,对于任何输入,输出都是3。

    再看下面这段代码:

                Mock<CounterBase> mock = new Mock<CounterBase>();
                mock.Setup(arg => arg.CountArgs(It.IsAny<int>(), It.Is<int>((i) => i < 100))).Returns(3);
                Assert.AreEqual(3, mock.Object.CountArgs(1, 2));
                Assert.AreEqual(0, mock.Object.CountArgs(4, 612));

    这表示,对于第二个参数如果小于2,则输出3,否则默认输出(即int的默认值0);

    其它两则类似,不再举例。

  • 相关阅读:
    Git 最全命令使用
    git 配置(实用)
    用Redis进行实时数据排名
    最长上升子序列
    KMP算法
    计算星期几【基姆拉尔森公式】
    集合划分(贝尔数)
    合数分解(质因数分解)
    乘法逆元
    扩展欧几里得算法
  • 原文地址:https://www.cnblogs.com/luminji/p/2136525.html
Copyright © 2011-2022 走看看