有没有办法让我的模拟冒充一种类型?我想做这样的事情:
var myMock = new Mock<IMyType>();
myMock.Setup(x => x.GetType()).Returns(typeof(MyTypeImpl));
Run Code Online (Sandbox Code Playgroud)
但是,GetType不能重写.
有什么建议?
is您可以(不应该)实现自己的可执行类似函数的可覆盖接口方法,而不是使用运算符来检查类型,而是使用运算is符(或typeof()/GetType())在通常的类集上实现它.
也就是说,如果你is以一种需要像这样可测试的方式使用运算符,那么你很可能在某种程度上违背了多态性和接口的目的.我想我是否可以摆脱它.
我知道这是一篇旧帖子,但我正在寻找解决此问题的方法...
使用 Moq 可以将标准 GetType 签名添加到您的界面,允许 Moq 模拟该方法,而无需编写任何更多代码,因为该方法已经为您实现。
Type GetType();
Run Code Online (Sandbox Code Playgroud)