c# - 如何设置 Mock 已经将对象呈现为默认行为?
问题描述
我可以做这个:
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"));
其他方法将具有其默认行为。
推荐阅读
- azure - 如何将 Ionic 3 (Angular 5) 应用程序连接到 Azure SQL 数据库?
- redis - Redis - 获取集群中的总数据集大小
- java - 在 Linux 上运行与 Windows 兼容的 .jar 文件?
- r - rjava 和 java 问题与 r 在 mac os mojave 问题上
- android - 自治 DFU 北欧
- eclipse-plugin - 类似于
对于命令处理程序 - google-apis-explorer - 无法从 DCM 中检索广告素材
- html - HTML 日期选择器与日期输入重叠
- python - 从python中的.eml文件解析excel附件
- git - 我可以为几个目录创建一个 git 存储库,这些目录不一定共享一个祖先目录,除了 root `/`?