2016-05-26 22 views

回答

10

事实证明,您可以使用reader宏#'或var引用要测试的私有函数。如果私有函数是在命名空间AB,并命名为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)))))) 
+2

使用语法'#'AB/D'是'(VAR AB/d)'快捷方式,与返回‘VAR’,这指向“功能”'ab/d'。当Clojure看到该变量时,它会在评估之前自动替换该函数。我发现这个(大多数是无证的)行为已经好几年了。 –

+0

@AnnThompson Huh,看起来像'clojure.lang.Var'实现'IFn'。我不知道。我想这会让你有一定的感觉...... –

+0

那种悲伤,私人被修补在clojure那样 – matanster