Moqgit
// 假定我有一个 MyFactory 用来建立 MyInterface 实例
// 建立 MyFactory 的 Mock 对象 var mockFactory = new Mock<MyFactory>(); // 建立 MyInterface 的 Mock 实例 var mockInstance = new Mock<MyInterface>(); // 使用 Moq 实现若是调用 MyInstance.DoSomething(bool) 方法不管传入参数为什么值一律抛出 MyException 异常 mockInstance.Setup(c => c.DoSomething(It.IsAny<bool>())) .Throws(new MyException("my exception message")); // 使用 Moq 实现 MyFactory 的 Mock 实例第一次调用 CreateInstance(string) 方法时返回 MyInterface 的 Mock 实例 // 第二次及之后调用则返回真正的 MyInstance 实例 mockFactory.SetupSequence(f => f.CreateInstance(It.IsAny<string>())) .Returns(mockInstance.Object) .Returns(new MyInstance("real object")); client.Factory = mockFactory.Object;
Please refer to Moq Quickstartgithub
Moq is intended to be simple to use, strongly typed (no magic strings!, and therefore full compiler-verified and refactoring-friendly) and minimalistic (while still fully functional!).api