问题标签 [test.check]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
clojure - 如何使用 `clojure.spec/+` 限制生成样本的大小?
clojure.spec/coll-of
:gen-max
选择限制生成的样本大小。有模拟clojure.spec/+
吗?
random - clojure.test.check.random 命名空间是否打算在外部使用?
Clojuretest.check
库包含 JavaSplittableRandom
类提供的功能的不可变版本,正如 Gary Fredericks 在他的“Purely Random”演讲中所描述的那样。但是,API 文档排除test.check
了clojure.test.check.random
实现此功能的命名空间。这个命名空间是要直接从 外部的代码中使用test.check
,还是应该被视为实现细节而不以这种方式使用?
clojure - 如何生成具有给定种子和大小的单个值?
该test.check
库提供了一个generate
函数,该函数接受生成器和大小,并从生成器返回具有给定大小的单个值,但它以不确定的方式获取其种子。该库还提供了一个quick-check
函数,该函数接受一个种子并使用该种子尝试一个属性,但它没有提供一种方法来控制大小或检索超出其真实性或虚假性的属性的返回值。
有没有办法生成具有明确种子和大小的值,用于对生成的数据进行确定性模拟等目的?
clojure - 如何在 Clojure 的 test.check 中对随机子序列进行采样?
我正在尝试生成Subset Sum Problem的随机可解实例。Wikipedia 声明目标值应始终为零,但也可以指定目标值,这就是我在这里所做的。
所以这个想法是使用创建一个随机向量(gen/vector gen/int)
,然后对一个随机子向量进行采样并对该向量求和以创建目标值。使用明显策略的问题gen/elements
是它可能会重复采样相同的元素。
我的下一个最佳想法是创建一组随机索引并提取这些索引处的所有元素。有没有更简单的方法?
clojure - 如何始终为规范中的可选键生成数据?
如果我有一个像
当我这样做时
有没有办法告诉生成器在为其生成数据时始终考虑可选键?
我知道这可以通过自定义生成器来完成,但我想知道是否有可用的功能,或者可能是一种更简单的方法,它不涉及我定义自定义生成器。
clojure - 如何使用 test.check 生成随机图?
为了生成测试,我正在尝试以邻接列表形式生成随机图。一个示例图是:
(邻接表作为集合实现。)
我的第一个想法是这样的:
({min-elements 1}
是必需的,因为tcgen/elements
不适用于空集。)
但是,这会产生生成图表的风险,例如
where:b
是为 的邻接列表随机选择的:a
,但不是为图本身选择的。所以:a
有一个不存在的邻居。
另一种选择是
它遍历所有顶点并为每个顶点显式生成一个随机邻接列表。这保证了所有顶点都将出现在图中,但缺点是 test.check 看不到正在生成的邻接列表。所以我担心这会破坏缩小的逻辑。
有没有避免这两个陷阱的解决方案?
clojure - Clojure 规范 - s/或单个分支生成器
是否可以覆盖默认规范生成器,以便始终仅为s/or
复合规范的单个分支生成数据?
clojure - Clojure 规范 - 测试检查 OutOfMemoryError
我正在尝试对这个简单的功能进行基于属性的测试:
...使用fdef
和check
:
一段时间后调用test/check
终止OutOfMemoryError
:
Exception in thread "Timer-1" Error printing return value (OutOfMemoryError) at clojure.test.check.generators/choose$fn (generators.cljc:260). Java heap space
等等
我无法弄清楚这里有什么问题。功能和规格似乎工作正常,例如
clojure - 需要帮助了解为什么当 REPL 未失败时 Clojure 规范测试/检查未通过返回验证
我一直在使用 Clojure Spec 进行测试和数据生成,并且看到一些奇怪的行为,其中该函数在单元测试中有效,而在 REPL 中验证有效,但使用 spec.test/check 的生成测试失败。
我创建了一组这样的规范:
和 fn 实现:
在 REPL 中,我看到了我期望从规范的生成和测试中看到的内容:
但我不明白为什么我从测试/检查中看到这个:
感觉它与生成器 fn 组合有关,尽管返回的对象现在对我来说看起来“不错”。
clojure - Clojure 规范 - 谓词的覆盖检查生成器
有没有办法在调用时覆盖核心谓词函数的生成器clojure.spec.test.alpha/check
?
可以通过内部路径覆盖谓词生成器s/gen
:
但该选项不存在于test/check
:
必须提供名称或符号,但规范的名称是什么?string?
我试过使用符号,都是'字符串?和`字符串?但它也没有用。
string?
通过s/with-gen
内部包装覆盖生成器s/fdef
会导致生成器代码显示在函数的文档中......这会影响 imo 的可读性。
仅仅为此目的定义新规范::string
感觉不对。