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