为什么我的 `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-fn
和 with-redefs
无法工作。
我正在尝试替换 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-fn
和 with-redefs
无法工作。