clojure.test's use-fixture'u kullanırken, fikstür işlevinden test işlevine bir değer iletmenin bir yolu var mı?Bir fikstürden clojure.test ile bir teste nasıl geçilir?
cevap
Birkaç iyi seçenek dinamik bağlama ve with-redefs
. Sen fikstür test ad alanından bir var bağlamak ve sonra bir test tanımında bunu kullanabilirsiniz:
core.clj:
(ns hello.core
(:gen-class))
(defn foo [x]
(inc x))
test/merhaba/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)))))
bunu run-tests
içinden çağrılmasına, demirbaşlar kullanmaz, hangi doğrudan testi çağırarak karşılaştırarak çalıştığını söyleyebilirim:
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}
Bu yaklaşım, fikstürlerinin çalışmasını test ettikleri için kapattığından çalışmaktadır, ancak gerçekten de (genellikle) test işlevlerine yapılan çağrıları doğrudan almazlar, bu nedenle test koduna bilgi aktarmak için kapakların kullanılması mantıklı olur.
Belki de değil doğrudan bir cevap, fikstürün bir :each
fikstürü zaten, ya da bunu yapabilirsiniz, sadece polis bir :each
fikstürü dışarı olmanın tahammül ve ilgili devlet dönen bir set-up
fonksiyonunu oluşturmak ve ilk olarak diyoruz ama eğer Bir fikstür yerine, testinizin satırı. Bu, bazı durumlar için en iyi yaklaşım olabilir.
(defn set-up [] (get-complex-state))
(deftest blah
(let [state (set-up)]
(frobnicate)
(query state)
(tear-down state)))
- 1. Teste V100
- 2. Bir vis.js ağı nasıl geçilir?
- 3. Python ile dosyalara nasıl geçilir?
- 4. Yapı referans ile nasıl geçilir?
- 5. Teste tabi olmayan arama yöntemleri?
- 6. Başka bir etkinliğe byte [] listesi nasıl geçilir
- 7. Eclipse'den Github'da yeni bir projeye nasıl geçilir?
- 8. Nancy'den bir Jilet görünümüne model nasıl geçilir
- 9. Farklı bir android tarayıcı ile nasıl etkileşime geçilir (get url)
- 10. Request.Form ile herhangi bir ayrıntıyı bilmeden nasıl geçilir?
- 11. Varargs olarak bir dizi ilkel nasıl geçilir?
- 12. DataTable.Select() sonucu yeni bir DataTable'a nasıl geçilir?
- 13. Yıldızla argüman nasıl bir sonraki yönteme geçilir?
- 14. CakePHP yabancı bir tuşa nasıl geçilir
- 15. ConverterParameter olarak bir tamsayı nasıl geçilir?
- 16. Bir değişken PHP'den LESS'e nasıl geçilir?
- 17. Model bir görünümden kısmi görünümüne nasıl geçilir?
- 18. Erlang, modülden başka bir parametreye nasıl geçilir
- 19. Alaycı bir casus yapıcıya nasıl geçilir?
- 20. Git ile 'master' konumuna nasıl geçilir?
- 21. angular beforeEach enjekte etmek için basit bir teste neden oluyor
- 22. Stream.read'de bir offset kadar uzun bir süre nasıl geçilir?
- 23. Paylaşılan öğe bir parçadan bir etkinliğe nasıl geçilir
- 24. Taksonomi paradoksu nasıl geçilir?
- 25. Bir şubeden diğerine nasıl geçilir ve ödeme nasıl yapılır?
- 26. Python'da EOF'ye nasıl geçilir?
- 27. ArrayList JasperReports'a nasıl geçilir?
- 28. Sporktan bahara nasıl geçilir?
- 29. Url.Action Alanında Nasıl Geçilir?
- 30. İçerik AsyncTask'a nasıl geçilir?