我想测试我的类的方法A,但是没有调用通常由A调用的实际方法B.那是因为B有很多外部交互,我现在不想测试.
我可以为B调用的所有服务创建模拟,但这是相当有用的.我宁愿只是模拟B并让它返回样本数据.
这可能与Moq框架有关吗?
dca*_*tro 37
这是一个抓住!您必须确保方法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
Run Code Online (Sandbox Code Playgroud)
在幕后,Moq将动态创建一个扩展MyClass和覆盖的类B.
| 归档时间: |
|
| 查看次数: |
7995 次 |
| 最近记录: |