2010-05-10 86 views
2

我是Moq和單元測試的新手。我必須爲許多具有其他類的對象的類編寫單元測試。我可以嘲笑類對象的方法嗎?這是確切的場景 -什麼時候可以模擬一個對象及其方法?

我有一個類兩個類A和B和A有一個B的私人對象,並在A的方法我內部調用B的方法,然後做一些計算並返回結果。我可以在這個場景中嘲笑B的方法嗎?請儘量詳細說明我可以嘲笑課程的方法和功能的條件。感謝名單

回答

1

是的,你可以嘲笑B.

的方法來做到這一點大概是B的實例傳遞到A的構造函數,當你創建的最簡單方法。

這樣在你的單元測試中,你可以創建一個B的模擬器並將其傳入。一般來說,您可以輕鬆地模擬您傳入或從對象外部設置的任何對象。所以任何傳遞給構造函數或設置屬性。儘管我不太瞭解Moq的確切信息,但可能會模擬私有變量,但通過重構代碼以將相關對象傳遞給它,通常會更好。

如果B實現一個接口,IB,那麼你會做這樣的事情:

var mockB = new Mock<IB>(); 
mockB.Setup(x => x.SomeMethod()).Returns([whatever value you want to return]); 
var a = new A(mockB.Object); 

注:此代碼是C#和內存,因此可能是不正確的。這更多的是一個普遍的想法。

之後,您可以調用您的方法,它將使用您在安裝程序的Return方法中執行其計算的任何值。

+0

嘿格倫。我有你提到的確切場景。所以我甚至可以通過嘲弄依賴的對象,甚至嘲笑這些功能。感謝您的快速回復! – Shailendra 2010-05-10 07:22:22

相關問題