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

yak*_*ver 16 unit-testing private clojure

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

yak*_*ver 20

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

  • 使用语法`#'ab/d`是`(var ab/d)`的快捷方式,返回"var",它指向"function"`ab/d`.当Clojure看到var时,它会在评估之前自动替换该函数.几年来,我发现这种(大多数是无证件的)行为令人困惑. (2认同)