例如,我知道with-redefs在测试某些东西时如何使用 stub 变量。我想知道是否可以将重新定义仅保留在代码的直接主体中,这样它就不会影响任何随后调用的函数。例如:
(defn foo [] (println "foo")
(with-redefs [println (constantly nil)]
(println "bar")
(foo))
什么都不打印,但如果可以做我所描述的事情,我们会看到只打印fooprintln ,因为它会在被调用的 function 中保留其原始值foo。这是可能吗?