我是新來的Clojure所以請原諒任何明顯的錯誤的宏操作。我試圖測試一些使用redis-clojure庫的Clojure數據訪問代碼。雖然我的集成測試當然會測試整個堆棧,但我不希望我的單元測試依賴於連接到redis服務器實例。用Midje嘲弄實際的Redis命令似乎是相對直接的,但是連接宏更難處理。
建議需要
似乎什麼不能做或發現通過Midje文檔嘲諷Redis的連接或重新定義宏的方式。從core.clj相關頂層連接宏是:
(defmacro with-server
"Evaluates body in the context of a connection to Redis server
specified by server-spec.
server-spec is a map with any of the following keys:
:host (\"127.0.0.1\")
:port (6379)
:db (0)
:timeout (5000)
:password (nil)"
([server-spec & body]
`(with-connection connection# *pool* ~server-spec
(binding [redis.vars/*channel* (make-direct-channel connection#)]
[email protected]))))
(original code in context here)
我似乎沒有能夠重新定義宏在我的測試代碼和功能包宏沒有按因爲我仍然需要身體被執行來產生我的結果,所以我不會再向前走。我最想做的是執行傳遞給連接宏的主體,並丟棄宏的其餘部分。有任何想法嗎?
經過這個問題,我發現https:// github。com/ptaoussanis/carmine/issues/16,然後決定對我的單元測試命中本地redis實例是完全正確的 –