2010-08-10 101 views
4

我對單元測試還比較陌生。我已經在Ruby中編寫了一個需要文件的類,通過該文件搜索給定的正則表達式模式,替換它,然後將更改保存迴文件。我希望能夠爲這種方法編寫單元測試,但我不知道如何去做。有人可以告訴我我們如何測試處理文件I/O的方法嗎?單元測試文件I/O方法

+0

可能重複[如何單元測試將文件保存到磁盤?](http://stackoverflow.com/questions/3381801/how-do-i-unit-test-saving-file-to-the -disk) – 2010-08-10 18:01:30

回答

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

如果你傳遞一個文件對象的方法;嘗試創建一個虛擬文件對象,使用一些I/O數據流將內容添加到文件對象並將其傳遞給正在測試的方法。

如果您只是使用某個數據流傳遞對象的內容,請創建一個虛擬數據流並將其傳遞給該方法。

您也可以選擇創建一個虛擬文件並從該文件路徑創建一個文件對象,並將其傳遞給您正在測試的方法。

+0

不是'File'對象的數據流? – 2010-08-10 23:15:51