2011-07-13 61 views
11

有沒有一種方法或模塊允許我模擬僞文件系統以用於Perl單元測試?用於Perl單元測試的模擬文件系統

我在單元測試中使用了各種Test::*Test::Mock*模塊,但偶爾我希望能夠僞造一個文件系統。一個簡單的例子(和最低要求)將僞造-r-f文件測試運算符的結果,以便在我調用執行文件測試的對象或模塊時,我可以更容易地控制結果。

我知道有很多方法可以解決這個問題,比如在自己的函數中創建臨時文件或者包裝文件測試,然後可以被嘲笑,但是有時候如果我能夠獲得Perl對我說謊......所以被測試建議重寫代碼解決方案不要求;-)

更新:

有剛剛找到並閱讀this SO question,重寫代碼,使其更後可測試看起來像更明智的選擇。儘管如此,手指交叉...

回答

6

這些值得一看:Filesys::VirtualFilesys::Virtual::Async。我用過第一個。與Path::ClassFile::Temp混合在一起,很容易做到各種各樣自潔的東西簡潔優雅。 Test::Virtual::Filesystem也看起來很有趣。

+1

感謝您的聯繫。我承認我不確定我會用Filesys :: Virtual做些什麼 - 它似乎是其他東西的基類。請問您過去如何使用它可以擴展一點嗎? – Mike

+0

@Mike,對不起,我真的應該鏈接這個:[Filesys :: Virtual :: Plain](http://search.cpan.org/perldoc?Filesys::Virtual::Plain)。它更接近準備使用開箱即用。 – Ashley

+0

謝謝 - 我最終也發現了這一點,而且看起來很可能。我還沒有機會查看它,但希望儘快這樣做。 – Mike