问题标签 [clojure.spec]

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.

0 投票
1 回答
594 浏览

clojure - 如何使用 clojure.spec 生成相互关联的参数?

我有一种从字符串对中删除公共前缀的方法,并且一直在尝试为它创建一个生成器。生成随机字符串对是微不足道的,但我怎样才能强制许多对有共同的前缀?简单地过滤对生成的示例数量不足,因此我正在尝试创建一个自定义生成器来满足要求。

这就是我现在所拥有的;它有效,但我想生成更好的参数:

尝试使用生成器,我想出了以下内容。它生成满足我要求的字符串对,但我不知道如何将它们拆分为我的函数的参数:

0 投票
2 回答
446 浏览

clojure - 根据调用为函数生成 clojure 规范

是否可以根据调用函数的规范生成/推断 clojure 规范:

假设我有一个函数 foo 我已经为它编写了一个规范,在 foo 内部我调用其他函数 bar() 接受 foo 的一些输入(已经有规范),所以我的问题是可以推断/生成酒吧的规格?任何现有的图书馆?

谢谢

0 投票
1 回答
155 浏览

clojure - How to check Clojure, macro specs?

If I try to check a macro spec with clojure.spec.test.alpha, no tests are run, but if I define the same macro as a function with the same spec, a sequence of tests are run against the function. I can always generate parameters to unit test the macro, but is there a way to get that for free with spec? Here is an example:

0 投票
1 回答
860 浏览

clojure - 如何使用 Clojure.Spec 指定映射中的两个键应具有相同的值?

举一个最小的例子,我有一张包含以下字段的地图。

我已经为这个形状写了以下规格。

我将如何编写::confirm-password规范来检查两个值是否相等?即我需要访问其他字段(密码)才能访问它。

我尝试过的一件事是在注册表单上编写规范以访问密钥以确保它们是相同的并且那种工作但问题是我失去了路径特异性。基本上,生成的规范/问题指向注册表单,而不是::confirm-password我理想中想要的。

0 投票
1 回答
361 浏览

clojure - 比较两个规格值,Clojure.spec

我已将规格定义为-

它工作正常(s/valid? ::collection {:start 9 :end 13})

但现在我还必须检查start应该小于end. 怎么做?有没有更简单的方法可以在不创建另一个 fn 并检查的情况下做到这一点?

0 投票
1 回答
80 浏览

clojure - 您如何在参数中使用带有映射的“fdef”?

我试图让 fdef 使用一组地图作为参数成功验证。我得到以下信息:

显然我错过了如何将 args 与他们的规范结合起来;这有效:

和这个一样

任何帮助深表感谢!

0 投票
2 回答
676 浏览

clojure - 如何始终为规范中的可选键生成数据?

如果我有一个像

当我这样做时

有没有办法告诉生成器在为其生成数据时始终考虑可选键?

我知道这可以通过自定义生成器来完成,但我想知道是否有可用的功能,或者可能是一种更简单的方法,它不涉及我定义自定义生成器。

0 投票
1 回答
97 浏览

clojure - Clojure.spec:如何规范对随机变化敏感的数据结构?

我正在尝试使用 clojure.spec进行交互式开发,但函数参数的规范存在问题,无法改变很多。例如,如果一个函数接收一个文件名作为参数,我可以编写以下规范:

如果我锻炼它:

该函数将使用大量随机文件名进行测试,这些文件名将无法读取任何文件。可以将文件名限制为一组有效和无效的文件名。这对于测试来说很好,但它会使规范特定于所选集合。

这不仅是文件名的问题,而且对于任何复杂的数据结构,即使是很小的随机更改也可能使其无用。

我该怎么办?有什么相关的技术或好的做法吗?

0 投票
1 回答
106 浏览

clojure - Clojure 在验证中使用来自另一个必需键的值

我对clojure比较陌生,我正在寻找一种方法来使用一个所需键的值来验证另一个键。我可以通过使用这两个值创建另一个地图并传递它来做到这一点,但我希望有一种更简单的方法。谢谢

0 投票
2 回答
370 浏览

clojurescript - 当函数返回其符号时,如何从 var 中提取元数据?

我使用re-frame with spec来验证app-db,就像在todomvc示例中一样。

当用户输入无效条目时,我正在使用s/explain-data(在重新帧拦截器中)返回一个命名导致验证失败problems的 icate 的地图。:pred这个谓词是一个类似的符号project.db/validation-function

我的验证函数有元数据,可以从 repl 使用:

函数定义(在project.db命名空间中)如下所示:

问题是我无法弄清楚如何动态检索元数据(在project.events命名空间中工作),例如:

我尝试了以下方法来代替what-goes-here?

  • symbol?true
  • str"project.db/validation-function"
  • metanil
  • var给出编译时错误“无法解析 var: p1__46744# in this context”

我认为问题在于我得到了一个符号,但我需要它所引用的 var,这是元数据所在的位置。

我试过使用宏,但真的不知道我在做什么。是我能找到的最接近的讨论,但我无法解决。

帮助!