Revision: 55008
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at January 21, 2012 05:57 by ef
Initial Code
(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)))
Initial URL
Initial Description
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"
Initial Title
Clojure test stubbing
Initial Tags
Initial Language
Clojure