2017-03-25 1 views
1

Ich versuche, die stacktrace-file-and-line (private) -Funktion in clojure.test zu ersetzen, aber with-redefs-fn beim Ausführen von Tests scheint keine Wirkung zu haben. Wenn ich den folgenden Code ausführe, wird das Original stacktrace-file-and-line anstelle meiner anonymen Funktion aufgerufen.Warum wird mein `mit-redefs-fn` erneutverbunden?

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

Hat with-redefs-fn nicht mit privaten Funktion arbeiten, oder gibt es etwas über den clojure.test Namespace, das von der Arbeit verhindert?

Antwort

1

Ich vermute, dass clojure.test ist kompiliert mit direct linking und damit verursacht, dass with-redefs-fn und with-redefs wird nicht funktionieren.

+0

Basierend darauf "Ab Clojure 1.8 ist die Clojure-Kernbibliothek selbst mit Direktverknüpfung kompiliert." Ich denke du hast Recht. – James

+0

Ich habe die Clojure-Code-Build-Dateien überprüft (z. B. ant build.xml oder maven pom.xml) und sie haben direktlinking-Eigenschaft auf true, aber ich habe nicht analysiert, ob sie für die in maven central veröffentlichten Jars verwendet werden. –

Verwandte Themen