是否有無法在通用測試套件中包含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?)
後來,如果我想運行鍼對該功能只具備生成測試,我可以使用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})
但我)反正是有包括這些測試中我一般測試套件運行?我正在考慮test.check has的那種clojure.test
集成。最近的東西,我可以看到ii)是stest/instrument
(見here)的功能。但是,這似乎讓我們開始檢查repl。不完全是我想要的。另外,iii)是否已註冊功能規格?
(defspec foo-test
100
;; NOT this
#_(prop/for-all [v ...]
(= v ...))
;; but THIS
(stest/some-unknown-spec-fn foo))
我用'clojure.spec.alpha'替換了調用'clojure.spec',並且使用了Clojure 1.9。代碼沒有發現錯誤...你有更新的版本嗎? – DjebbZ