3 回答

TA貢獻1898條經驗 獲得超8個贊
測試依賴于文件系統的功能的最簡單方法是在每個測試周圍添加一些設置和拆卸,在運行測試之前將必要的文件放在適當的位置,然后在運行測試后刪除它們。
func TestZipper(t *testing.T) {
// Create temporary files
defer func() {
// Clean up temporary files
}()
t.Run("group", func(t *testing.T) { // This is necessary so the above defer function doesn't run too soon
// your actual tests
})
}

TA貢獻1858條經驗 獲得超8個贊
我知道“不訪問文件系統”是很多人對“單元測試”定義的一部分。如果你的職業不是尋找和捍衛定義:忘掉那個限制吧。文件系統訪問快速且良好,go 工具甚至對名為“testdata”的文件夾進行特殊處理:此類文件夾應該包含測試期間要使用的測試數據。
Go(和他們的用戶)在區分“單元”和“集成”測試時并不是很迂腐??纯慈绾螠y試這些東西的標準庫。編寫相關測試比在 fs 訪問上變得幼稚更重要。(請注意,文件系統和數據庫在技術上是外部系統,但在現實生活中,沒有文件系統就無法編譯 Go 代碼,因此將測試與這個“外部系統”隔離是荒謬的。)

TA貢獻1805條經驗 獲得超10個贊
那么,您可能會尋找一種以安全方式操作文件系統的方法,或者在其他地方尋找解決方案。這個功能的職責是什么?它應該準備一個 zip 文件還是將其寫入文件系統?
我建議你應該從這個函數中取出文件創建并將函數更改為:
func Zipper(src string, dst io.Writer, target string) error { ziper := zip.NewWriter(dst) defer ziper.Close()
這樣,出于測試目的,您可以提供一個簡單的緩沖區,而在生產中使用您心愛的文件系統!
- 3 回答
- 0 關注
- 169 瀏覽
添加回答
舉報