我可以做到这一点。
var alreadyPresentMyClass = GetMyClass();//retrieving MyClass from somewhere
var mock = new Mock<IMyClass>();
mock.Setup(x=> x.Method1()).Callback(alreadyPresentMyClass.Method1);
mock.Setup(x=> x.Method2()).Callback(alreadyPresentMyClass.Method2);
....
mock.Setup(x=> x.Method666()).Throws(new Exception("BAD LUCK")); //this is only method which is throwing error in this test. So the only one I want to setup.
....
mock.Setup(x=> x.Method1000()).Callback(alreadyPresentMyClass.Method1000);
如何去除不必要的垃圾,设置成千上万的方法, 而设置它基于另一个对象作为默认,像这样。
var mock = Mock.CreateByAlreadyPresent(GetMyClass());
mock.Setup(x=> x.Method666()).Throws(new Exception("BAD LUCK"));
有什么想法吗?我可以自己写反射方法,但是否已经有这样的方法?
你可以使用属性CallBase来实现。
var mock = new Mock<MyClass> { CallBase = true };
mock.Setup(x => x.Method666()).Throws(new Exception("BAD LUCK"));
其他方法将有他们的默认行为。