Prefer passing functions/data over heavy mocks; use with-redefs sparingly.
Mocking exists in Clojure, but idiomatic Clojure often needs less of it because you can pass behavior directly as a function and keep most logic pure.
Practical patterns that Java developers usually like:
{:now now-fn :fetch fetch-fn})Tools like with-redefs can be useful, but they temporarily change global var roots—so use them deliberately and keep the scope tight.