次のコードでは、bar 関数を実装する前に foo 関数をテストしたいと思います。
(unfinished bar)
(def tbl {:ev1 bar})
(defn foo [ev] ((tbl ev)))
(fact "about an indirect call"
(foo :ev1) => nil
(provided
(bar) => nil))
しかし、ミジェは次のように述べています。
FAIL at (core_test.clj:86)
These calls were not made the right number of times:
(bar) [expected at least once, actually never called]
FAIL "about an indirect call" at (core_test.clj:84)
Expected: nil
Actual: java.lang.Error: #'bar has no implementation,
but it was called like this:
(bar )
foo がバーを直接呼び出していないため、'provided' はバー関数をフックできないと考えました。しかし、次のように 2 行目を変更したかどうかもわかりました。
(def tbl {:ev1 #(bar)})
その後、テストは成功しました。
最初のバージョンで成功する方法はありますか?
ありがとう。
PS: Clojure 1.5.1 と Midje 1.5.1 を使用しています。