7
Vorrei scrivere test unitari per funzioni definite come private utilizzando defn-. Come posso fare questo?Come posso scrivere test unitari per le funzioni di clojure private?
Vorrei scrivere test unitari per funzioni definite come private utilizzando defn-. Come posso fare questo?Come posso scrivere test unitari per le funzioni di clojure private?
Si scopre che è possibile utilizzare la macro # del lettore o var per fare riferimento alla funzione privata da testare. Se la funzione privata è nel namespace AB e ha il nome c:
(ns a.b-test
(:use
[clojure test]))
(deftest a-private-function-test
(testing "a private function"
(let [fun #'a.b/c]
(is (not (fun nil))))))
Utilizzando la sintassi '# 'ab/d' è una scorciatoia per' (var ab/d) ', con ritorni il "var", che punta alla "funzione" 'ab/d'. Quando Clojure vede la var, sostituisce automaticamente la funzione prima della valutazione. Ho trovato questo comportamento (per lo più non documentato) abbastanza confuso per diversi anni. –
@AlanThompson Huh, sembra 'clojure.lang.Var' implements' IFn'. Non lo sapevo. Suppongo che abbia un certo senso ... –
un po 'triste, privato è stato rattoppato in clojure come quello – matanster