這可能是瘋狂的。傳遞系統類作爲構造函數參數
我想把依賴注入的想法變爲極端。我已將所有與System.IO有關的行爲隔離到一個類中,以便我可以在其他類中嘲笑該類,從而減輕我的更大的單元測試套件對擔心實際文件系統的負擔。
但文件IO類我最終只能與集成測試,測試which-- course--的增加了複雜性我真的不希望處理當所有我真正想要做的就是確保我的FileIO類調用正確的System.IO東西。我不需要集成測試System.IO。我的FileIO類不僅僅是簡單地包裝System.IO函數,現在它每次都包含一些邏輯(也許這就是問題所在)。
所以我想是能夠測試我的文件IO類,以確保它使通過嘲諷System.IO類本身正確的系統調用。理想情況下,這將是那麼容易,因爲有像這樣一個構造函數:
public FileIO(
System.IO.Directory directory,
System.IO.File file,
System.IO.FileStream fileStream
)
{
this.Directory = directory;
this.File = file;
this.FileStream = fileStream;
}
然後在類似的方法調用:
public GetFilesInFolder(string folderPath)
{
return this.Directory.GetFiles(folderPath)
}
但這個因爲有關System.IO類不飛是靜態的類。據我所知,它們既不能以這種方式實例化,也不能爲了嘲弄而被分類。