1

私はClojureを学んでおり、そうするためにTDDを使用しようとしています*。

私は midje をテストライブラリとして使用しています。これまでのところ気に入っています。期待される結果と実際の結果の表示は非常に役に立ちます。

しかしclojure.tools.trace、失敗した最初のテストのトレースを印刷するために使用する方法または同様のものはありましたか?

*: 具体的には、Robert C. Martin の変換優先前提に関する講演を見た記憶があり、この方法で階乗関数を実装しています。ただし、表示するコードはまだ多くありません。

4

1 に答える 1

2

1 つの可能性は、独自のエミッターを作成することですが、それは特定の目的にとってはやり過ぎかもしれません。

または、期待値のフォーマットを担当する関数にモンキー パッチを適用することもできます。

(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ただし、文字列を生成する必要があります。つまり、スタック トレースを直接出力すると、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.>
于 2014-12-06T17:35:20.297 に答える