【发布时间】:2018-10-07 22:17:09
【问题描述】:
我正在尝试编写一些单元测试,以测试一些数据库模型。
我希望我的第一个 deftest 函数获取插入用户的 db 生成的 ID,将其保存在某个位置,以便下一个 deftest 可以从 db 中获取同一用户。
我认为我可以通过在第一个 deftest 中使用 def 来做到这一点,但定义的 var 在第二个 deftest 中被认为是 Unbound Var。这是我的代码:
(deftest test-user->db
(testing "Adding a new user record to db"
(->> (user->db {:name "Bob"}) ;; returns a UUID ID
(def mock-user-id)) ;; binding it here
(is (uuid? mock-user-id)))) ;; this passes
(deftest test-db->user
(testing "Getting a user record from db"
(let [user (db->user mock-user-id)] ;; mock-user-id is unbound :-/
(is (instance? User user))
(is (contains? user :id))
(is (contains? user :name))
(is (= mock-user-id (:id user)))
(is (= "Bob" (:name user))))))
很遗憾,我找不到任何资源来说明为什么会这样。我只能假设命名空间的全局变量会以某种方式为每个 deftest 重置?
【问题讨论】:
标签: clojure