J'ai ce (non (1 (= (= (: longueur% 1) 0)%)) code> comme postcontion. Écrit comme ceci, il est assez clair, mais quand cette condition n'est pas rencontrée, je reçois cela: AssertionError Assert failed: (not-zero-length %)
3 Réponses :
Ceci est discuté dans la liste de diffusion de clojure suivante thread . < / p>
En regardant la source clojure.core < / a> Vous pouvez voir que la macro FN ne passe que dans une fonction Boolean à la fonction d'affirmation et n'inclut pas de paramètre facultatif permettant de transmettre un argument de message supplémentaire dans. P>
Donc, on dirait qu'il n'y a aucun moyen de le faire proprement. p>
Ce fil a deux ans et demi et n'a pas été commenté par quiconque ayant une puissance décisionnelle. Je ne dirais pas que cette fonctionnalité est considérée comme une inclusion.
On dirait que la solution est de ne pas utiliser plus de noms de fonction descriptifs dans vos affirmations (pas de fonctions intégrées).
Réponse mise à jour pour refléter ce que a noté Amalloy.
expansion sur une suggestion ci-dessus: Lorsque vous nommez une fonction anonyme, toutes les erreurs impliquant que FN seront plus lisibles p> aussi, comment est-ce que vous avoir deux% de substitution ci-dessus? # () ne nid pas. P> p>
% dans une postcondition pose la valeur de retour de la fonction. Une autre raison d'utiliser (fn ...) code> au lieu de # (...) code> je suppose.
Ce Post dans le même thread suggère l'utilisation du clojure .test / est macro, qui renvoie un message d'erreur significatif. retourne p>
L'utilisation de clojure.test / est en dehors des tests gâchera vos statistiques de test. Par exemple. Lorsque vous exécutez vos tests, il signalera la voie supérieure «Nombre d'affirmations» que ce qui se passe vraiment dans le test. Par conséquent, je ne recommanderais pas cette approche.
Cette réponse a résolu ce problème pour moi Stackoverflow.com/a/24874961/3646180