Clojure 1.3 предоставляет макрос with-redefs, который работает даже с переменными, которые не были объявлены динамическими:
user=> (def this-is-not-dynamic)
user=> (with-redefs [this-is-not-dynamic 900] this-is-not-dynamic)
900
Для обратной совместимости Midje использует свою собственную версию, чьи кишки выглядят так:
(defn alter-one-root [[variable new-value]]
(if (bound? variable)
(let [old-value (deref variable)]
(alter-var-root variable (fn [current-value] new-value))
[variable old-value])
(do
(.bindRoot variable new-value)
[variable unbound-marker])))