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

Why is my `with-redefs-fn` rebinding ignored?

我正在尝试替换 clojure.test 中的 stacktrace-file-and-line(私有)函数,但在 运行 测试似乎无效时使用 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 命名空间是否有什么东西阻止了它的工作?

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