我對單元測試還比較陌生。我已經在Ruby中編寫了一個需要文件的類,通過該文件搜索給定的正則表達式模式,替換它,然後將更改保存迴文件。我希望能夠爲這種方法編寫單元測試,但我不知道如何去做。有人可以告訴我我們如何測試處理文件I/O的方法嗎?單元測試文件I/O方法
4
A
回答
6
看看這個How do I unit-test saving file to the disk?
基本上的想法是一樣的,文件系統是爲你的類的依賴。因此,引入一個可以在單元測試中嘲笑的角色/接口(這樣在單元測試時就沒有依賴關係);在角色的方法應該是你從文件系統需要的所有東西 -
Read() # returns file_contents as a string or string[]
Write(file_contents) # same as above
現在你可以使用一個模擬返回罐頭字符串數組 - 你的類,然後可以處理這個數組。在生產代碼中,角色的真正實現會碰到文件系統以返回行數組。
2
您可以創建一個已知內容的文件,執行替換方法,然後使用所需的結果驗證修改文件的內容。
我建議使用臨時文件http://ruby-doc.org/core/classes/Tempfile.html每次運行,並有在單元測試框架一個良好的閱讀http://ruby-doc.org/stdlib/libdoc/test/unit/rdoc/classes/Test/Unit.html
2
如果你傳遞一個文件對象的方法;嘗試創建一個虛擬文件對象,使用一些I/O數據流將內容添加到文件對象並將其傳遞給正在測試的方法。
如果您只是使用某個數據流傳遞對象的內容,請創建一個虛擬數據流並將其傳遞給該方法。
您也可以選擇創建一個虛擬文件並從該文件路徑創建一個文件對象,並將其傳遞給您正在測試的方法。
+0
不是'File'對象的數據流? – 2010-08-10 23:15:51
相關問題
- 1. 單元測試,重構,IO
- 2. 單元測試Java方法
- 3. 單元測試UI方法
- 4. python單元測試方法
- 5. 單元測試的地方放置測試文件
- 6. 無法單元測試原型方法
- 7. 包含文件系統調用的單元測試方法
- 8. 單元測試沒有定義方法的PHP文件
- 9. 如何單元測試創建和讀取文件的方法
- 10. 單元測試方法ASP.NET幫助?
- 11. 靜態方法和單元測試
- 12. 如何單元測試即時方法
- 13. 到單元測試Repository.Update方法正道
- 14. 單元測試UrlHelper擴展方法
- 15. 單元測試破壞性方法
- 16. 單元測試不叫viewDidAppear方法
- 17. 單元測試方法獨立
- 18. 單元測試類VS方法
- 19. 一次性方法的單元測試
- 20. MVC Moq單元測試無效方法
- 21. 針對Post方法的單元測試
- 22. 導出XML方法的單元測試
- 23. c#單元測試覆蓋方法
- 24. 嵌套私人方法單元測試
- 25. 單元測試存根方法
- 26. 單元測試的模擬DLL方法
- 27. 綜合單元測試的方法
- 28. 單元測試工廠方法
- 29. 單元測試綜合服務方法
- 30. 單元測試@Around建議的方法
可能重複[如何單元測試將文件保存到磁盤?](http://stackoverflow.com/questions/3381801/how-do-i-unit-test-saving-file-to-the -disk) – 2010-08-10 18:01:30