为什么我的`with-redefs-fn`重新绑定被忽略了?

时间:2017-03-25 17:03:35

标签: clojure clojure.test

我正在尝试替换stacktrace-file-and-line中的clojure.test(私有)函数,但在运行测试时使用with-redefs-fn似乎没有效果。当我执行以下代码时,将调用原始stacktrace-file-and-line而不是我的匿名函数。

(with-redefs-fn 
 {#'clojure.test/stacktrace-file-and-line (fn [stacktrace] {:file "foo.clj" :line 1})}
 #(clojure.test/run-tests 'repl-test.core-test))

with-redefs-fn是否不能使用私有函数,或者clojure.test命名空间是否存在阻止其工作的内容?

1 个答案:

答案 0 :(得分:1)

我怀疑clojure.test是使用direct linking编译的,因此导致with-redefs-fnwith-redefs无法正常工作。