2009-06-09 154 views
4

有没有办法让我的模拟模拟一个类型?我试图做这样的事情:嘲笑Moq中的is运算符

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

然而,GetType不能覆写投放。

有什么建议吗?

回答

7

除了使用is操作者检查的类型,你可能(不应该)实现执行类似的功能你自己重写接口的方法,并与is运营商(或typeof()/GetType())实现它在你平时的一堆类。这就是说,如果你使用is运算符的方式需要像这样测试,那么更有可能的是,你基本上无法打破多线程和接口某处的接口的目的。我会考虑是否可以摆脱它。

3

我知道这是一个古老的职位,但我正在寻找一个解决这个问题...

使用起订量是可能的标准的GetType签名添加到您的界面,让起订量嘲笑方法,而不需要编写更多的代码,因为该方法已经为您执行。

Type GetType();