Return to Snippet

Revision: 55008
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