Funktionen höherer Ordnung geben immer noch Ergebnisse zurück, so dass Sie sie noch überprüfen können.
Zum Beispiel, wenn Sie map
testen wollten, überlegen Sie, was es tun soll: Es soll eine Funktion und eine Sammlung als Argumente erhalten, diese Funktion auf jedes Element in der Sammlung anwenden und eine neue Sammlung von die Ergebnisse.
So eine einfache Art und Weise der Prüfung, die wäre:
(is (= [1 2 3 4] (map inc [0 1 2 3]))
Das gleiche Prinzip gilt, wenn Sie eine Funktion höherer Ordnung zu testen sind, die das Ergebnis einer anderen Funktion: Sie einfach testen es gibt, was angenommen hat, nach dem Aufruf der Funktion, die es zurückgibt:
(defn adder [n]
(fn [x]
(+ x n)))
(is (= ((adder 10) 5) 15))
Hoffe, das hilft.
In diesem Sinne, sind Makros auch speziell die DoXYZ getestet? –