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