如何在 Clojure 中测试高阶函数?
我可以测试接受一个值的函数,并检查返回值是否符合预期。
那么如何对于高阶函数进行测试呢?
或者我们通常避免这样做吗?
如何在 Clojure 中测试高阶函数?
我可以测试接受一个值的函数,并检查返回值是否符合预期。
那么如何对于高阶函数进行测试呢?
或者我们通常避免这样做吗?
高阶函数仍然会返回结果,因此您仍然可以检查它。
例如,如果您想要测试 map
函数,请考虑它应该做什么:它应该接收一个函数和一个集合作为参数,将该函数应用于集合中的每个项,并返回结果的新集合。
因此,测试的一种简单方法是:
(is (= [1 2 3 4] (map inc [0 1 2 3]))
(defn adder [n]
(fn [x]
(+ x n)))
(is (= ((adder 10) 5) 15))