/ 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"
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
Copy this code and paste it in your HTML
(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)))