如何设置Mock已经将对象作为defaul行为呈现?

问题描述 投票:0回答:1

我可以做到这一点。

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"));

有什么想法吗?我可以自己写反射方法,但是否已经有这样的方法?

c# testing mocking moq
1个回答
-1
投票

你可以使用属性CallBase来实现。

var mock = new Mock<MyClass> { CallBase = true };
mock.Setup(x => x.Method666()).Throws(new Exception("BAD LUCK"));

其他方法将有他们的默认行为。

© www.soinside.com 2019 - 2024. All rights reserved.