2009-06-09 149 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();