我如何设置一个clojurescript项目以使用规格并测试clojure.core函数在运行时



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)。

也许Specs还不适合Clojurescript。

这是因为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/clajure.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?)

但是,请小心,因为如果您不正确,您可能会陷入讨厌的问题。

最新更新