2016-05-26 87 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