2017-10-16 146 views
3

在我工作的代碼,我被迫要測試一個方法,其中有這樣一個電話:C# - 如何嘲笑this.GetType()大會

this.GetType().Assembly.GetTypes().Where(x => ...); 

我想來嘲笑這個電話,以便在撥打電話時我的選擇彙編從this.GetType().Assembly中檢索。
在組裝還會有假動作類型,我會用我的斷言

的方法我試圖(仍然沒有成功)使用墊片,如所描述here

有沒有辦法達到我的目標?

最後,請注意,我知道這不是進行單元測試的正確方法。通常我測試的類都是使用依賴關係創建的,我可以輕鬆地進行模擬。這是一個例外,因爲這是Cunsomer-Driven Contracts的解決方案範圍的實現,我不允許對其進行更改。

+0

您是否有能力重構該代碼? – Nkosi

+0

@Nkosi否:(如果我是,我已經做到了:) – user449689

回答

5

如果您無法更改測試中的代碼,則可以使用像TypeMockJustMock這樣的框架。這些框架使用分析器鉤子,因此可以重定向每個函數調用,甚至可以調用第三方庫。

這將允許您將呼叫重定向到this.GetType().Assembly的獲取方並返回預設的程序集列表。