clojure.spec/coll-of
:gen-max
选择限制生成的样本大小。有模拟clojure.spec/+
吗?
问问题
409 次
1 回答
1
s/*
并且s/+
不要采取类似的选项,:gen-max
但那些重复的正则表达式规范确实考虑clojure.spec.alpha/*recursion-limit*
到了. 我认为这是相当粗粒度的控制,对像这样的简单规范没有实际影响,对于任何正例,这似乎总是生成最长约 200 个元素的序列*recursion-limit*
:
(binding [clojure.spec.alpha/*recursion-limit* 1]
(->> (gen/sample (s/gen (s/* int?)) 200)
(map count)
(apply max)))
限制生成序列长度的一种方法是提供自定义生成器:
(s/def ::ints
(s/with-gen
(s/+ int?)
#(gen/vector gen/int 1 10)))
(gen/sample (s/gen ::ints) 200)
这应该始终生成一个包含 1-10 个整数的向量。
于 2018-10-15T11:59:55.087 回答