模拟Moq中的is运算符

时间:2009-06-09 12:09:28

标签: c# mocking moq

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

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

但是,GetType不可覆盖。

有什么建议吗?

2 个答案:

答案 0 :(得分:7)

不是使用is运算符来检查类型,而是可以(不应该)实现自己的可执行类似函数的可覆盖接口方法,并使用{{1运算符(或is)在你平常的一堆类中。

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

答案 1 :(得分:3)

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

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

Type GetType();