Howdy,

I asked this on #clojure and posted a question on Stackoverflow
(http://stackoverflow.com/questions/4424220/how-do-i-rebind-a-var-in-a-
lazytest-describe-test), but no dice.  I'm assuming that it's because
this is so simple and I'm doing it so incorrectly that nobody can even
begin to formulate a response.  Feel free to tell me to go back and re-
R all TFMs ;)

First of all, sorry if I am screwing up some terminology; I'm pretty
new to Clojure. I am trying to write a very simple test using Lazytest
that depends on a var binding. I can not seem to rebind a var in the
test file and have the code under test use that binding.

Here is the code I am trying to test:

(ns liar-liar.core
  (:gen-class))

(def *input-file-name*)

(defn parse-input
  "Just print return a var for now..."
  []
  *input-file-name*)

(defn -main [& args]
  (binding [*input-file-name* (first args)]
    (println (parse-input))))

And here is the test:

(ns liar-liar.test.core
  (:use lazytest.describe)
  (:use liar-liar.core))

(binding [*input-file-name* "my-input-file"]
  (describe parse-input "Just returns a var"
    (it "returns a var"
      (= "my-input-file" (parse-input)))))

When I try to run this test, I get this error:

java.lang.IllegalStateException: Var liar-liar.core/*input-file-name*
is unbound.

Interestingly enough, if I move the binding form:

(ns liar-liar.test.core
  (:use lazytest.describe)
  (:use liar-liar.core))

(describe parse-input "Just returns a var"
  (it "returns a var"
    (binding [*input-file-name* "my-input-file"]
      (= "FAIL" (parse-input)))))

The test works as it should, but the reporting isn't ideal, as it
doesn't print the value of the (parse-input) expression (the test
passes if I replace "FAIL" with "my-input-file" though):

FAILURE: Namespaces liar-liar.test.core #'liar-liar.core/parse-input
Just returns a var returns a var
at liar_liar/test/core.clj line 7
Expression: (binding [*input-file-name* my-input-file] (= FAIL (parse-
input)))
Result: false
Local bindings:
{}

Is there some other way I should be going about doing this kind of
testing?

Thanks! Dan

-- 
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