3

Clojure 1.9 引入了规范。clojure.core 库中的函数现在具有规范。如何设置 clojurescript 项目以使用规范并在运行时测试 clojure.core 函数?

我使用了库[org.clojure/test.check "0.10.0-alpha2"][org.clojure/spec.alpha "0.1.123"]安装specs和命令instrument。它可以检测我编写规范的函数中的问题。但它没有检测到clojure.core(例如,map)的问题。

也许规范还不能与 clojurescript 一起使用。

4

1 回答 1

2

这是因为没有clojure.core函数规范,只有几个宏的规范 - 看这里:https ://github.com/clojure/core.specs.alpha/blob/master/src/main/clojure/clojure/core /specs/alpha.clj#L53

注意:

在宏扩展期间始终检查宏,您不需要为宏规范调用工具

https://clojure.org/guides/spec#_macros

您可以为核心功能编写自己的规范并注册它们,如下所示:https ://clojure.github.io/clojure/branch-master/clojure.spec-api.html#clojure.spec/fdef

(s/fdef clojure.core/symbol
  :args (s/alt :separate (s/cat :ns string? :n string?)
               :str string?
               :sym symbol?)
  :ret symbol?)

但是,请注意这一点,因为如果您没有正确处理,您可能会遇到令人讨厌的问题。

于 2017-10-05T07:07:13.640 回答