2024 Clojure 状况调查!中分享您的看法。

欢迎!请查看关于页面了解更多关于该功能的信息。

0投票
规范

问题

test.check 的一个目标是为用户提供编写任意丰富生成器的功能,同时保持确定性,这对于重现失败具有明显的优势。

当前,{{fspec}} 生成器生成一个函数,该函数通过调用 {{clojure.test.check.generators/generate}} 生成随机返回值,这是一个仅用于开发的功能函数,因为它绕过了 test.check 控制的伪随机数源。它还绕过了 test.check 的尺寸机制,因为 {{generate}} 函数总是使用 {{30}} 的大小。

可能的解决方案

针对此问题,我看到了两种合理的解决方案,这取决于生成的函数是否应该是纯函数(目前它不是,因为它忽略其参数并随机生成返回值)。

纯函数

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

非纯函数

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

2 个答案

0投票

评论者:gfredericks

为所有列出的方法添加了补丁。如果对其中任何一种方法给出反馈,我将乐于添加测试。

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