我想使用defn-为定义为私有的函数编写单元测试。我怎么能这样做?
答案 0 :(得分:15)
事实证明,你可以使用阅读器宏#'或var来引用要测试的私有函数。如果私有函数位于名称空间a.b中并且名称为c:
(ns a.b-test
(:use
[clojure test]))
(deftest a-private-function-test
(testing "a private function"
(let [fun #'a.b/c]
(is (not (fun nil))))))
答案 1 :(得分:0)
在此之后进行有关此主题的对话:https://groups.google.com/forum/#!msg/clojure/mJqplAdt3TY/GjcWuXQzPKcJ
我建议您不要使用defn-
编写私有函数,而应将私有函数放在单独的命名空间中(并因此将clj
文件放在utils.clj
中)。
那么你:
(:require [yourappname.utils :refer :all])
然后,您的API的任何用户都不会看到或无法访问这些帮助器功能,除非他们当然需要utils文件,这大概意味着他们知道自己在做什么。