/// <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 }