作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我想测试我的类的方法 A,但不调用通常由 A 调用的实际方法 B。那是因为 B 有很多我现在不想测试的外部交互。
我可以为 B 调用的所有服务创建模拟,但这需要相当多的工作。我宁愿模拟 B 并让它返回示例数据。
这可能与 Moq 框架有关吗?
最佳答案
是的,有一个问题!您必须确保方法 B
是虚拟的并且可以被覆盖。
然后,将模拟设置为在未提供设置时调用基本方法。然后设置 B
,但不设置 A
。因为 A
没有设置,实际的实现将被调用。
var myClassMock = new Mock<MyClass>();
myClassMock.Setup(x => x.B()); //mock B
myClassMock.CallBase = true;
MyClass obj = myClassMock.Object;
obj.A(); // will call the actual implementation
obj.B(); // will call the mock implementation
在幕后,Moq 将动态创建一个扩展 MyClass
并覆盖 B
的类。
关于c# - 在最小起订量中模拟被测对象的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21460834/
我是一名优秀的程序员,十分优秀!