J'ai du mal à créer un simple test unitaire dans Clojure en utilisant with-redefs
pour se moquer de Windows. Le code de test, la fonction que je suis sur le point de tester et la fonction à moquaient sont tous dans les différents espaces de noms/fichiers:with-redefs ne fonctionne pas dans un projet spécifique sur Windows
Fonction sous test:
(ns com.mynamespace.a
(:require [com.mynamespace.b :as b]))
(defn afunc [param]
(b/bfunc param))
espace de noms à charge b à se moquaient out:
(ns com.mynamespace.b)
(defn bfunc [param]
; External call
)
code d'essai
(ns com.mynamespace.a-test
(:require [com.mynamespace.a :as a]
[com.mynamespace.b :as b])
(:use [clojure.test]))
(deftest a-tests
(with-redefs [b/bfunc (constantly "dummy")]
(print (a/afunc "test"))
)
)
Je pense que je l'utilise with-redefs
correctement, parce que mon test unitaire fonctionne bien sur des machines Linux (contenant docker ou Ubuntu virtuel), mais il ne fonctionne tout simplement pas quand les exécuter/développement sur ma machine dev Windows: le with-redefs
liaisons sont pas appliqué et le test veut rendre réel par exemple appels http, que je voudrais me moquer. C'est la même chose si je lance lein test
, ou si j'exécute le test depuis un REPL via Eclipse CCW.
Je sais que with-redefs a un comportement étrange, mais comme mon test fonctionne bien sur Linux, je suppose que quelque chose me manque quand j'exécute le test de ce projet sous Windows. Je voudrais réaliser des boucles de rétroaction rapides, en écrivant des tests sur ma machine Windows.
Avez-vous une idée de ce que je fais mal? Merci, Andras
Impossible de reproduire avec Clojure 1.8.0 sous Windows 7. –