2017-03-25 18 views
1

clojure.teststacktrace-file-and-line(私的)機能を置き換えようとしていますが、実行中のテストで効果がないと思われる場合はwith-redefs-fnを使用しています。次のコードを実行すると、私の匿名関数の代わりに元のstacktrace-file-and-lineが呼び出されます。私の `with-redefs-fn`再バインドはなぜ無視されますか?

(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

私はclojure.testdirect linkingしてコンパイルし、これwith-redefs-fnwith-redefsが動作しないことが原因となっていると思われます。

+0

「Clojure 1.8以降、Clojureコアライブラリ自体は直接リンクでコンパイルされています。」私はあなたが正しいと思います。 – James

+0

Clojureコードのビルドファイル(ant build.xmlやmaven pom.xmlなど)を確認したところ、直接リンクプロパティがtrueに設定されていましたが、maven centralに公開されているjarファイルに使用されているかどうかは解析されませんでした。 –