用Midje進行單元測試是一個很棒的體驗,但現在我需要測試一些與filessytem交互的代碼。具體來說,代碼從本地目錄佈局構建數據結構表示。測試文件系統代碼
想到的是在/ tmp中創建目錄和文件,然後在測試之後必須清理它們。我可能可以使它工作,但如果有一個正確的方法來做它會好得多。
在Clojure或更普遍的情況下,測試文件系統代碼的首選方法是什麼?
用Midje進行單元測試是一個很棒的體驗,但現在我需要測試一些與filessytem交互的代碼。具體來說,代碼從本地目錄佈局構建數據結構表示。測試文件系統代碼
想到的是在/ tmp中創建目錄和文件,然後在測試之後必須清理它們。我可能可以使它工作,但如果有一個正確的方法來做它會好得多。
在Clojure或更普遍的情況下,測試文件系統代碼的首選方法是什麼?
我不確定是否有特定的東西可以幫助您使用文件系統的東西,但安裝和拆卸可以使用background
或against-background
(如果您需要詞法範圍界定)來執行。
的總體思路是類似於其他語言的安裝/拆卸,你會做這樣的事情:
(require '[clojure.java.io :as io])
(background (before :facts (io/make-parents "parent/child/file")
:after :facts (map io/delete-file (reverse (file-seq (io/file "parent")))
(facts "About something or other
...)
你的事實之前,這將創建parent
和child
目錄(而不是文件 - 你如果你還需要文件,可以添加spit或其他內容)。然後你的事實後:
parent
目錄的內容列表(使用file-seq)的代碼有創建和刪除文件可能不是最好的(我是新來的!),但設置方法和拆除Midje測試中的東西是合理的。
注意事項:
:after
語法而不是使用(after)
宏可以確保即使測試引發異常也會發生拆卸。(against-background)
一起包裝,然後執行相同的操作。參考文獻:
https://github.com/marick/Midje/wiki/Setup,-Teardown,-and-State https://github.com/marick/Midje/wiki/Background-prerequisites