Example #1
0
        /// <summary>
        /// 参数匹配测试.
        /// </summary>
        private static void TestMatchingArguments()
        {
            #region 定义 Mock 的部分.


            // 构造一个 针对 IHelloWorld  接口的 Mock 对象。
            var mock = new Mock <IHelloWorld>();


            // 测试 It.IsAny
            // 当调用 IHelloWorld  接口的 IsUsableID 方法时, 对于传入的任意 int 数据,  返回  true.
            mock.Setup(h => h.IsUsableID(It.IsAny <int>())).Returns(true);


            // 测试 It.Is
            // 当调用 IHelloWorld  接口的 IsEven 方法时
            // 对于传入的 int 数据,  如果满足 参数 %2 等于零  返回  true.  否则返回 false.
            mock.Setup(h => h.IsEven(It.Is <int>(i => i % 2 == 0))).Returns(true);


            // 测试 It.IsInRange
            // 当调用 IHelloWorld  接口的 Add 方法时
            // 如果 满足 参数 在 0-10 之间, 那么返回 true.  否则返回 false.
            mock.Setup(h => h.Add(It.IsInRange <int>(0, 10, Range.Inclusive))).Returns(true);


            // 测试 It.IsRegex
            // 当调用 IHelloWorld  接口的 Exists 方法时
            // 如果参数中包含数字,那么返回 true.
            mock.Setup(h => h.Exists(It.IsRegex("[0-9]+", System.Text.RegularExpressions.RegexOptions.IgnoreCase))).Returns(true);

            #endregion



            #region 测试 Mock 的结果


            IHelloWorld hw = mock.Object;


            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("IsUsableID({0}) 返回结果:{1}", i, hw.IsUsableID(i));
            }

            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("IsEven( {0} ) 返回结果:{1}", i, hw.IsEven(i));
            }


            for (int i = 8; i < 13; i++)
            {
                Console.WriteLine("Add( {0} ) 返回结果:{1}", i, hw.Add(i));
            }


            string val = "ABC";
            Console.WriteLine("Exists( {0} ) 返回结果:{1}", val, hw.Exists(val));
            val = "AB12";
            Console.WriteLine("Exists( {0} ) 返回结果:{1}", val, hw.Exists(val));


            #endregion
        }