我使用的规格如下:
(ns blah
(:require [clojure.spec.alpha :as s]
[clojure.spec.gen.alpha :as gen]))
(s/def ::user
(s/with-gen
(s/and string? #(re-matches #"^[a-zA-Z]{3,20}$" %))
#(gen/string-alphanumeric)))
生成示例时可以正常运行,尽管通常会达到100次尝试的限制。我确实想要gen/string-alpha
,尽管此生成器不可用。
当我尝试做到这一点时:
#(gen/fmap clojure.string/join (gen/vector gen/char-alpha 3 20))
...它说“向量的第一个arg必须是生成器”。
gen/char-alpha
(points at clojure.test.check.generators
)为什么不起作用?
答案 0 :(得分:2)
Oopsie需要阅读文档:
clojure.spec.gen.alpha/char-alpha
([& args])
Fn returning clojure.test.check.generators/char-alpha
正确的格式是:
#(gen/fmap clojure.string/join (gen/vector (gen/char-alpha) 3 20))