2013-02-23 128 views
3

我很高興能找到FakeFS能夠僞造一個文件系統沙箱,其中我的測試可以混亂。現在我希望能夠測試FileUtils.chown和chmod操作,並且希望能夠在測試環境中使用假用戶,而不是將我的東西綁定到操作系統用戶數據庫,以完成便攜式和獨立測試。如何模擬系統用戶在ruby中測試文件系統交互?

我用rspec做我的測試。

什麼是最好的方法來做到這一點?

回答

1

我不知道我得到的問題,但我認爲你要測試的文件實用程序調用的「真實」的結果,即改變權限和文件的所有權,這就是爲什麼你需要某種用戶。我不會那樣做,因爲「SELECT沒有被破壞」:http://pragmatictips.com/26

相反,假設如下:如果調用FileUtils.chown和具有正確參數的朋友,他們會做正確的事情。爲了確保您的應用程序將正確的參數傳遞給FileUtils,請使用模擬。這裏有一個例子:https://gist.github.com/phillipoertel/5020102

如果你不想將你的測試與實現緊密結合(模擬知道你的類在內部發生了什麼),你可以通過預期它的影響來測試更改後的權限。例如:如果@user之前不允許訪問@file,則調用更改權限的方法,然後調用其中一個需要更改權限的方法並聲明該方法有效。但是這種方法將訪問文件系統,而這首先不是你想要的。

+0

感謝您將我喚醒:-) – 2013-02-23 15:33:31

1

有一個非常簡單的方法來做到這一點:FileUtils::DryRun。這是一個模塊,就像FileUtils一樣,但實際上並沒有對文件系統做任何事情來處理這些情況。

如果你需要它來代替FileUtils,只需運行FileUtils = FileUtils::DryRun

+0

由於我需要測試文件系統在我的應用程序中經歷的各種狀態,因此FileUtils方法的一個簡單幹運行不會執行這個技巧,所以我使用的是FakeFS。我現在缺少的東西是能夠模擬作用於文件系統的不同系統用戶。 – 2013-02-23 15:16:35