2024 寰 Clojure 状态调查中分享您的想法!

欢迎!请参阅 关于 页面,了解更多有关此功能的信息。

0
Spec

问题

test.check 的一项目标是让用户能够编写灵活的生成器,同时保持确定性,这对于重现失败具有明显的优势。

目前,{{fspec}} 生成器生成一个函数,该函数通过调用 {{clojure.test.check.generators/generate}} 生成随机返回值。{{generate}} 函数仅限于开发使用,因为它绕过了 test.check 的受控伪随机数来源。它还绕过了 test.check 的大小机制,因为 {{generate}} 函数始终使用大小为 {{30}}。

可能的解决方案

这有两个合理的解决方案,具体取决于生成的函数是否应该是纯函数(目前它不是纯函数,因为它忽略了其参数并随机生成返回值)。

纯函数

我们可以生成一个可能的返回值的非空向量,并使用它来创建一个函数,该函数使用参数的 {{hash}} 来选择一个可能的返回值。

非纯函数

我们可以生成一个可能的返回值的非空集合,并使用它来创建一个具有内部状态的函数,该函数通过遍历可能的返回值来循环。

2 答案

0

评论由:gfredericks 添加

为列出的每种方法添加了一个补丁。如果对任何一种方法有反馈,也愿意添加测试。

0
参考: https://clojure.atlassian.net/browse/CLJ-1949(由 gfredericks 报告)
...