Quando si utilizza clojure.test's use-fixture, esiste un modo per passare un valore dalla funzione di fissaggio alla funzione di test?Come passare un valore da un faro a un test con clojure.test?
risposta
Un paio di buone scelte sono il binding dinamico e with-redefs
. Si potrebbe associare un var dal namespace provetta sul supporto e quindi utilizzarlo in una definizione di test:
core.clj:
(ns hello.core
(:gen-class))
(defn foo [x]
(inc x))
test/ciao/core.clj:
(ns hello.core-test
(:require [clojure.test :refer :all]
[hello.core :refer :all]))
(def ^:dynamic *a* 4)
(defn setup [f]
(binding [*a* 42]
(with-redefs [hello.core/foo (constantly 42)]
(f))))
(use-fixtures :once setup)
(deftest a-test
(testing "testing the number 42"
(is (= *a* (foo 75)))))
si può dire che funziona confrontando chiamando direttamente il test, che non fa uso di infissi, per chiamare attraverso run-tests
:
hello.core-test> (a-test)
FAIL in (a-test) (core_test.clj:17)
testing the number 42
expected: (= *a* (foo 75))
actual: (not (= 4 76))
nil
hello.core-test> (run-tests)
Testing hello.core-test
Ran 1 tests containing 1 assertions.
0 failures, 0 errors.
{:test 1, :pass 1, :fail 0, :error 0, :type :summary}
Questo approccio funziona perché gli apparecchi chiudono i test che eseguono, sebbene non riescano a effettuare direttamente le chiamate alle funzioni di test (di solito), quindi ha senso utilizzare le chiusure per passare le informazioni al codice di test.
Forse non una risposta diretta, ma se il vostro apparecchio è stato un :each
apparecchio in ogni caso, o si può tollerare che sia un :each
apparecchio, si può solo poliziotto fuori e creare una funzione set-up
ritorno allo stato rilevante e chiamarlo come il primo linea del test, invece di utilizzare un dispositivo. Questo potrebbe essere l'approccio migliore per alcune circostanze.
(defn set-up [] (get-complex-state))
(deftest blah
(let [state (set-up)]
(frobnicate)
(query state)
(tear-down state)))
- 1. Come creare un faro ActsAsTaggableOn con FactoryGirl?
- 2. Come passare i dati da un test unitario a un test carico?
- 3. Come passare un valore stringa a un componente in angular2
- 4. Come passare un valore DateTime a un WebMethod (ASMX)
- 5. Compilazione di una raccolta Proprietà di un faro con autofocus
- 6. Come inviare un valore da un componente a un altro?
- 7. Come passare il pacchetto da un frammento a un frammento
- 8. Come passare eventi click da un div a un altro?
- 9. Come passare i parametri da un controller a un modello?
- 10. come passare un argomento a un test di junit android (test parametrizzati)
- 11. CodeIgniter - Come passare un valore da una vista a un controller?
- 12. Come passare un evento a un metodo?
- 13. Come passare da un frame a Selenium WebDriver utilizzando Java
- 14. come passare un valore nullo in un campo chiave esterna?
- 15. Come passare un URI a un intent?
- 16. Come passare un valore di parametro a a4j: jsFunction
- 17. Come assegnare un valore a un data.frame filtrato da dplyr?
- 18. Come passare un valore da un frammento ad un altro in Android?
- 19. Passare un array come valore in un DbParameter ado.net
- 20. Come passare un valore enum a wcf webservice
- 21. Come mi aspetto un errore in un test unitario?
- 22. Passare un oggetto da ActionFilter.OnActionExecuting() a un ApiController
- 23. Passare un evento come un parametro a un metodo
- 24. Come passare un valore di argomento predefinito di un membro di istanza a un metodo?
- 25. Come passare una variabile da un Thread Group a un altro in JMeter
- 26. Come passare argomenti a un Dockerfile?
- 27. Test di un valore enum [Flag] per un singolo valore
- 28. Come passare un modello a una vista Razor da Nancy
- 29. Come passare da un file di configurazione statico con hardcoded a un file .properties?
- 30. Come passare da un server MySql a un'app per Android?