5

有没有办法让我的模拟模仿一种类型?我正在尝试做这样的事情:

var myMock = new Mock<IMyType>();
myMock.Setup(x => x.GetType()).Returns(typeof(MyTypeImpl));

但是,GetType不可覆盖。

有什么建议么?

4

2 回答 2

7

除了使用is运算符来检查类型,您可以(不应该)实现自己的可覆盖接口方法来执行类似的功能,并使用is运算符(或typeof()/GetType())在您通常的一堆类上实现它。

也就是说,如果您is以需要像这样可测试的方式使用运算符,那么您很可能基本上违背了多态性和接口的目的。我会考虑我是否可以摆脱它。

于 2009-06-09T12:12:33.040 回答
7

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

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

Type GetType();
于 2011-03-04T13:40:24.557 回答