是否有无法在通用测试套件中包含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