Le funzioni di ordine superiore restituiscono ancora risultati, quindi è ancora possibile controllarlo.
Ad esempio, se si desidera testare map
, pensare a cosa deve fare: Si suppone che ottenga una funzione e una raccolta come argomenti, applicare detta funzione a ogni elemento della raccolta, restituendo una nuova raccolta di i risultati.
Quindi un modo semplice di test che sarebbe:
(is (= [1 2 3 4] (map inc [0 1 2 3]))
Lo stesso principio si applica se si sta testando una funzione di ordine superiore che è il risultato di un'altra funzione: è sufficiente testarlo restituisce quello che si suppone a, dopo aver chiamato la funzione che lo restituisce:
(defn adder [n]
(fn [x]
(+ x n)))
(is (= ((adder 10) 5) 15))
Spero che questo aiuti.
su quella nota, sono state testate anche le macro specialmente quelle doXYZ? –