क्या सामान्यीकृत परीक्षण सूट में clojure.spec'd फ़ंक्शंस को शामिल करने के लिए वैसे भी है? मुझे पता है कि हम register specs और सीधे spec functions कर सकते हैं।एक परीक्षण सूट में clojure.spec'd फ़ंक्शंस को कैसे शामिल करें
(ns foo
(:require [clojure.spec :as s]
[clojure.spec.test :as stest]))
(defn average [list-sum list-count]
(/ list-sum list-count))
(s/fdef average
:args (s/and (s/cat :list-sum float? :list-count integer?)
#(not (zero? (:list-count %))))
:ret number?)
और बाद में, अगर मुझे लगता है कि spec'd समारोह के खिलाफ उत्पादक परीक्षण चलाना चाहते हैं, मैं stest/check
उपयोग कर सकते हैं।
=> (stest/check `average)
({:speC#object[clojure.spec$fspec_impl$reify__14282 0x68e9f37c "[email protected]"], :clojure.spec.test.check/ret {:result true, :num-tests 1000, :seed 1479587517232}, :sym edgar.core.analysis.lagging/average})
लेकिन i) वहाँ वैसे भी शामिल करने के लिए इन परीक्षण मेरी सामान्य परीक्षण के कमरे में चलाता है? मैं clojure.test
एकीकरण के बारे में सोच रहा हूं कि test.check has। सबसे नज़दीकी चीज जो मैं देख सकता हूं ii)stest/instrument
(देखें here) फ़ंक्शन। लेकिन ऐसा लगता है कि हम सिर्फ प्रतिलिपि पर जांच कर सकते हैं। मुझे जो कुछ चाहिए वो नहीं। इसके अलावा, iii) फ़ंक्शन चश्मा पंजीकृत हैं?
(defspec foo-test
100
;; NOT this
#_(prop/for-all [v ...]
(= v ...))
;; but THIS
(stest/some-unknown-spec-fn foo))
मैंने कॉल को 'clojure.specal'' के साथ 'clojure.spec' में बदल दिया, और मैं क्लोजर 1.9 का उपयोग कर रहा हूं। कोड में त्रुटियां नहीं आती हैं ... क्या आपके पास एक अद्यतन संस्करण है? – DjebbZ