问题 如何为私有clojure函数编写单元测试?


我想使用defn-为定义为私有的函数编写单元测试。我怎样才能做到这一点?


6348
2018-05-26 21:24


起源



答案:


事实证明,你可以使用阅读器宏#'或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))))))

13
2018-05-26 21:31



使用语法 #'a.b/d 是一个快捷方式 (var a.b/d),返回指向“函数”的“var” a.b/d。当Clojure看到var时,它会在评估之前自动替换该函数。几年来,我发现这种(大多数是无证件的)行为令人困惑。 - Alan Thompson
@AlanThompson嗯,看起来像 clojure.lang.Var 器物 IFn。我不知道。我想它有一定的意义...... - Nathan Davis
那种悲伤,私密的修补就像那样 - matanster


答案:


事实证明,你可以使用阅读器宏#'或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))))))

13
2018-05-26 21:31



使用语法 #'a.b/d 是一个快捷方式 (var a.b/d),返回指向“函数”的“var” a.b/d。当Clojure看到var时,它会在评估之前自动替换该函数。几年来,我发现这种(大多数是无证件的)行为令人困惑。 - Alan Thompson
@AlanThompson嗯,看起来像 clojure.lang.Var 器物 IFn。我不知道。我想它有一定的意义...... - Nathan Davis
那种悲伤,私密的修补就像那样 - matanster