为什么我不能在规范生成器中使用char-alpha?

时间:2018-08-12 07:40:28

标签: clojure clojure.spec

我使用的规格如下:

(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-alphapoints at clojure.test.check.generators)为什么不起作用?

1 个答案:

答案 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))