我刚刚开始研究数据库密集的Clojure应用程序,并尝试进行一些单元测试.理想情况下,我想通过嘲笑事实来避免实际打到真正的数据库.
这是一个简单测试的例子:
测试core.clj
(deftest core-test
(is (> (count (fn-under-test "foo")) 0)))
Run Code Online (Sandbox Code Playgroud)
core.clj
(defn fn-under-test [slug]
(db/query "select * from %1" slug))
Run Code Online (Sandbox Code Playgroud)
db.clj
(defn query [q & args]
(sql/with-connection db
(sql/with-query-results res
[(clause q args)]
(doall res))))
Run Code Online (Sandbox Code Playgroud)
我的问题:有没有办法从test-core.clj中将自定义函数绑定到'db/query',这样core.clj就会使用它,而不是db.clj中的定义?
谢谢!