On Sat, Dec 4, 2010 at 7:34 PM, Barry Dahlberg <barry.dahlb...@gmail.com> wrote:
> Hi Clojurians,
>
> I have a macro which creates a function for me and I would like to add
> some unit tests using clojure.test. How can I create a temporary scope
> so that any functions defined during the test are undefined
> afterwards? Here is a trivial example to illustrate:
>
> (deftest my-def-macro-test
>  (my-def-macro foo "bar")
>  (if (= (foo) "bar")))

Ordinarily, if you want to define temporary functions you can just

(let [x (fn [args] fnbody)]
  (do stuff with x))

(x undefined again here)

However, if your macro outputs a defn that won't work. You may want to
modify the macro to output just a (fn ...) form, and use

(def x (the-macro args & body))

to get global functions and

(let [x (the-macro args & body)]
  (do stuff with x))

to get local ones.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to