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

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

  • 相关阅读:
    谈敏捷的好文章
    梁信军说的话
    如何做需求管理
    支持向量机通俗解释
    如何写数据报告
    数据分析注意点
    傅盛谈管理的本质
    I Hate It HDU
    敌兵布阵 HDU
    P3372 【模板】线段树 1 (区间查询)
  • 原文地址:https://www.cnblogs.com/luminji/p/2136525.html
Copyright © 2011-2022 走看看