Clojure数据库单元测试/嘲笑

前端之家收集整理的这篇文章主要介绍了Clojure数据库单元测试/嘲笑前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚刚开始研究一个数据库重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))))

猜你在找的MsSQL相关文章