我試圖寫一個單元測試,涵蓋以下行淨假貨 - 當基類是抽象如何墊片繼承的財產?
var fileFullName = fileInfo.FullName;
其中的fileInfo是FileInfo的實例。
我使用假貨勻場處理FileInfo對象,但我無法提供FullName屬性的值,因爲它是從基類繼承。
name屬性,這是不能繼承的,我可以簡單地這樣做:
ShimFileInfo.AllInstances.NameGet = info => OriginalFullName;
由微軟提供的答案是建立在基類中的墊片,在這種情況下FileSystemInfo。但是,如果我試試這個:
ShimFileSystemInfo.AllInstances.FullNameGet = info => OriginalFullName;
它不工作,因爲FileSystemInfo是不能創建一個抽象類,因此不能勻。
在這種特殊情況下,我可以解決這個問題,因爲我可以將DirectoryName和Name屬性組合起來使其成爲可測試的,但看起來很瘋狂,我不能只使用我想要的屬性,因爲它恰好來自基礎。
有沒有人翻過這個問題,並設法解決它?
嗯,我還沒有遇到這個問題,但使用反射怎麼樣? –
爲什麼不創建一個測試文件嗎?測試文件可以做什麼時,您想使用假貨有沒有什麼特別的原因? – gfish3000
考慮你真的想考什麼,如果你不使用的測試文件,那麼什麼是真正的測試嗎?看起來你正朝着一個方向前進,你將要測試的只是你的假貨。 – Zache