Clojure数据库单元测试/嘲笑
发布时间:2020-12-12 16:56:19 所属栏目:MsSql教程 来源:网络整理
导读:我刚刚开始研究一个数据库重Clojure应用程序,并试图进行一些单元测试.理想情况下,我想避免通过嘲笑事情真正打到真正的数据库. 以下是一个简单测试的例子: 测试core.clj (deftest core-test (is ( (count (fn-under-test "foo")) 0))) core.clj (defn fn-unde
我刚刚开始研究一个数据库重Clojure应用程序,并试图进行一些单元测试.理想情况下,我想避免通过嘲笑事情真正打到真正的数据库.
以下是一个简单测试的例子: 测试core.clj (deftest core-test (is (> (count (fn-under-test "foo")) 0))) core.clj (defn fn-under-test [slug] (db/query "select * from %1" slug)) db.clj (defn query [q & args] (sql/with-connection db (sql/with-query-results res [(clause q args)] (doall res)))) 我的问题是:有没有办法,从test-core.clj里面,将自定义函数绑定到’db / query’,以便core.clj会使用它,而不是db.clj中的定义? 谢谢! 解决方法您可以使用 binding来尝试覆盖db / query,但是您需要首先定义命名空间和var.最简单的方法是将db.clj导入相同的命名空间,然后使用绑定.(ns test-core (:use clojure.test) (:require db)) (deftest core-test (binding [db/query (fn [query & args] (comment return some value here))] (is (> (count (fn-under-test "foo")) 0)))) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |