/ Published in: Clojure
Macro allowing for substitution of functions with predefined values. Taken from "Clojure in action" page 180 Example: (defn calc-x [x1 x2] (* x1 x2)) (defn calc-y [y1 y2] (/ y2 y1)) (defn some-client [] (println (calc-x 2 3) (calc-y 3 4))) (stubbing [calc-x 1 calc-y 2 (some-client))
prints: "1 2" instead of "6 4/3"
Expand |
Embed | Plain Text
(defmacro stubbing [stub-forms & body] (let [stub-pairs (partition 2 stub-forms) returns (map last stub-pairs) stub-fns (map #(list 'constantly %) returns) real-fns (map first stub-pairs)] `(binding [~@(interleave real-fns stub-fns)] ~@body)))
You need to login to post a comment.
