> In Java I'd just have an interface > with two implementations, and bootstrap the tests with a different > implementation, in clojure I guess I'd do something like: > (in-ns `some.thing) > (defn foo [] nil) > or something?
That would consitute a root binding because of the 'defn, but you need a dynamic rebinding. This is what you can use: (binding [existing-function (fn [a b] ...)] ;; your tests here ) For mocking java interfaces and classes I'm quite happy with Mockito [1], even though it's usage doesn't look always intuitive in clojure. This is an example for mock-testing a hadoop map function. (defn mock [#^Class class] (. Mockito mock class)) (defn mock-output [] (mock OutputCollector)) (defn mock-mapper [] (mock namespace.surveyed-users-mapper0)) (defn mock-reducer [] (mock namespace.surveyed-users-reducer0)) (defn mock-reporter [] (mock Reporter)) (defn mock-conf [] (mock JobConf)) (defn mock-filesystem [] (mock FileSystem)) (defn verify ([mock] (. Mockito verify mock)) ([mock mode] (. Mockito verify mock mode))) (defn stub [mock] (. Mockito when mock)) (deftest mapper0-map-click-test (let [output (mock-output) mapper (mock-mapper) key (to-key nil) value (Text. (tab "9900" "550" "990" "4040" "1" "3")) reporter (mock-reporter)] (doto (stub (.getState mapper)) (.thenReturn (ref {:network "9900" :input-file-name "/path/clicks/week/33/result/part-00000" :pagerules-table {"4040" ["1" "2" "3"]}}))) (mapper0-map mapper key value output reporter) (verify output) (.collect output (Text. "550") (Text. "0\t1,2,3")))) You need to import all the unqualified classes used here, of course. Florian [1] http://mockito.org/ -- Florian Ebeling florian.ebel...@gmail.com --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---