我正在尝试为一个类创建一个Mock对象,这样Mock对象可以访问所有与原始类相同的方法,除了我想要以不同方式执行的一个方法。但是,当我在调试模式下查看时,我的Mock对象有 no 方法,并且我不想要改变的所有调用(出于测试目的)都返回null。这就是我现在这样做的方式:
var originalClass = ContainingClass.OtherContainingClass.ClassIWantToMock;
var originalClassMock = new Mock<IClassToMock> {CallBase = true};
originalClassMock.Setup(c => c.MethodToMock(It.IsAny<paramType>()))
.Returns<TReturn>(originalClass.MethodToMock);
无论我仅模拟我想要更改的方法,以及模拟类中的每个方法,我都得到相同的结果。我怀疑这是因为IClassToMock是一个接口,即使我从一个实现该接口的对象提供方法。这可能就是为什么CallBase没有什么区别 - 无论是否设置了CallBase,我都得到相同的结果。有没有办法通过设置从实现该接口的类运行委托的方法来模拟接口?
谢谢!