模拟Moq中的is运算符

Jef*_*ron 4 c# moq mocking

有没有办法让我的模拟冒充一种类型?我想做这样的事情:

var myMock = new Mock<IMyType>();
myMock.Setup(x => x.GetType()).Returns(typeof(MyTypeImpl));
Run Code Online (Sandbox Code Playgroud)

但是,GetType不能重写.

有什么建议?

mqp*_*mqp 7

is可以(不应该)实现自己的可执行类似函数的可覆盖接口方法,而不是使用运算符来检查类型,而是使用运算is符(或typeof()/GetType())在通常的类集上实现它.

也就是说,如果你is以一种需要像这样可测试的方式使用运算符,那么你很可能在某种程度上违背了多态性和接口的目的.我想我是否可以摆脱它.


Pau*_*aul 7

我知道这是一篇旧帖子,但我正在寻找解决此问题的方法...

使用 Moq 可以将标准 GetType 签名添加到您的界面,允许 Moq 模拟该方法,而无需编写任何更多代码,因为该方法已经为您实现。

Type GetType();
Run Code Online (Sandbox Code Playgroud)