On Dec 15, 2010, at 6:05 PM, Ken Wesson wrote:
>> Midje makes it easy to use functions other than equality to check results:
>> 
>>    (facts
>>     (first (primes-greater-than-2)) => odd?
>>     (some-complicated-function) => (in-any-order [1 2 3]))
> 
> So, a predicate is called on the result instead of tested for equality
> with the result?

Yes. The use of #'odd? as a checker is just showing off. I'm not sure I've ever 
actually used a Clojure function as a checker in real life. I always use one of 
Midje's predefined checkers:

https://github.com/marick/Midje/wiki/Checkers

> 
>> Midje contains other features you might expect from a test framework. For 
>> example, when you have to use state, it gives you a way to set it up or tear 
>> it down:
>> 
>>     (fact
>>       (against-background (before :checks (swap! test-atom (constantly 0))))
>>       (swap! test-atom inc) => 1
>>       (swap! test-atom dec) => -1)
> 
> Why not use (reset! test-atom 0) above?

For a very subtle reason: I didn't think of it.

> 
>>    (background (around :facts (sql/with-connection db ?form)))
> 
> This doesn't seem to be wrapping anything. What determines its scope?

#'background's scope is the entire namespace (or, I should say, from the point 
it occurs in a file until the end of a file). It's useful for my emacs 
midje-mode, where a keypress sends an individual fact to the repl for checking. 
(In this case, before the fact is checked, it'll be wrapped with the connection 
form.) 

You can also wrap multiple facts with (against-background...)  (Putting 
against-background inside a fact is another shorthand that makes sending a 
single fact to the repl work better.)

The whole story about "backgrounds" is here:
https://github.com/marick/Midje/wiki/Setup%2C-Teardown%2C-and-State
https://github.com/marick/Midje/wiki/Background-prerequisites

-----
Brian Marick, Artisanal Labrador
Contract programming in Ruby and Clojure
Author of /Ring/ (forthcoming; sample: http://bit.ly/hfdf9T)
www.exampler.com, www.exampler.com/blog, www.twitter.com/marick

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