2014-12-06 4 views
1

Я изучаю Clojure и пытаюсь использовать TDD для этого *.Midje print stacktrace, когда тест не прошел

Я использую midje в качестве библиотеки для тестирования. Полюбите его до сих пор, отображение ожидаемого и фактического результатов очень полезно.

Но был ли способ использовать clojure.tools.trace или что-то подобное, чтобы напечатать след первого теста, который не удается?

*: В частности, я помню, как я видел разговор Роберта К. Мартина о предпосылке приоритета трансформации, и таким образом я реализую факториальную функцию. Пока еще нет кода для показа.

ответ

2

Одна из возможных может быть writing your own emitter, но это может быть излишним для вашей конкретной цели.

В качестве альтернативы, вы можете обезьяна патч функции ответственного за форматирование ожидаемых значений:

(require '[midje.util.exceptions :as e] 
     '[midje.emission.plugins.util :as u]) 

(defn- format-captured-throwable 
    [ex] 
    (if (e/captured-throwable? ex) 
    ;; ... adjust this to your needs ... 
    (pr-str 'this-is-your-exception (e/throwable ex)))) 

(alter-var-root 
    #'u/attractively-stringified-value 
    (fn [f] 
    #(or (format-captured-throwable %) (f %)))) 

format-captured-throwable должен производить строку, хотя, это означает, что непосредственно печать StackTrace позволит ему в конечном итоге нигде вблизи midje годов отчет об испытаниях.

user=> (fact (throw (Exception. "khaaaaaaaan.")) => :not-khan) 

FAIL at (form-init4689442922606051135.clj:1) 
    Expected: :not-khan 
     Actual: this-is-your-exception #<Exception java.lang.Exception: khaaaaaaaan.> 
Смежные вопросы