无论如何在通用测试套件中包含 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 "clojure.spec$fspec_impl$reify__14282@68e9f37c"], :clojure.spec.test.check/ret {:result true, :num-tests 1000, :seed 1479587517232}, :sym edgar.core.analysis.lagging/average})
但是我)无论如何将这些测试运行包含在我的通用测试套件中?我正在考虑test.check 具有的那种clojure.test
集成。我能看到的最接近ii)的是(see here ) 函数。但这似乎只是让我们打开对 repl 的检查。不是我想要的。另外,iii)功能规格是否已注册?stest/instrument
(defspec foo-test
100
;; NOT this
#_(prop/for-all [v ...]
(= v ...))
;; but THIS
(stest/some-unknown-spec-fn foo))