在運行時檢測代碼是否以lein test
開頭有沒有太髒的方法?我只想選擇不同的redis數據庫,所以像environ或使用不同資源文件的解決方案似乎有點矯枉過正。檢測leiningen測試模式
例如,leiningen會自動啓用測試配置文件,但我還沒有找到獲取當前啓用的配置文件列表的方法。
在運行時檢測代碼是否以lein test
開頭有沒有太髒的方法?我只想選擇不同的redis數據庫,所以像environ或使用不同資源文件的解決方案似乎有點矯枉過正。檢測leiningen測試模式
例如,leiningen會自動啓用測試配置文件,但我還沒有找到獲取當前啓用的配置文件列表的方法。
有沒有簡單的方法來做到這一點。 lein.test
和clojure.test
都沒有公開這些信息。即使你找到一種方法來破解一些私有變量的lein測試或clojure.test
並檢查它以確定你的代碼是否作爲lein test
的一部分運行。
不過,這將有一個非常大的問題:你的產品代碼需要require
測試庫代碼(例如clojure.test
)或更糟的構建工具的代碼(lein test
插件代碼)。
您可能會嘗試在您的生產代碼中定義這樣的配置var(動態或不),並使用fixtures將其設置在測試中。
最好的解決方案是根據系統屬性或環境變量等外部變量動態配置應用程序(例如使用建議的environ
)。這樣,您可以根據需要配置儘可能多的不同配置集(例如,prod vs單元測試vs集成測試vs性能測試等),而不僅僅是兩個(prod vs測試)。
它可能看起來像是矯枉過正,但組件例如是爲像這樣的確切用途而發明的。一般情況下還是依賴注入。
我知道那種感覺,它只是一個私人項目,無需困難的東西等等。這就是爲什麼我把我的自己的模板,讓所有我需要開始運行lein new ...
這是我的解決方案,以規避「只想選擇不同的redis數據庫」usecases。
編輯這是一個web框架模板:https://github.com/sveri/closp但很多這些部件都沒有專門針對Web開發,尤其是組件部分:https://github.com/sveri/closp/tree/master/resources/leiningen/new/closp/clj/components
還有一個集成測試,我使用的測試組件具體如下:https://github.com/sveri/closp/blob/master/resources/leiningen/new/closp/integtest/clj/web/setup.clj
是github上的這個模板嗎? :-)即使它對你來說是特定的,但有更多的例子可供他人學習是很好的 –
http://stackoverflow.com/questions/32323572/ - 第二個答案也許?看起來環境是要走的路。 – birdspider