如何设置 clojureScript 项目以使用规范并在运行时测试 clojure.core 函数?
How do I set up a clojureScript project to use specs and test the clojure.core functions at runtime?
引入了 Clojure 1.9 specs。 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。
这是因为没有 clojure.core
函数的规范,只有几个宏的规范 - 看这里:https://github.com/clojure/core.specs.alpha/blob/master/src/main/clojure/clojure/core/specs/alpha.clj#L53
请注意:
macros are always checked during macro expansion, you do not need to
call instrument for macro specs
(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?)
但是,请注意这一点,因为如果处理不当,您可能会遇到棘手的问题。
引入了 Clojure 1.9 specs。 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。
这是因为没有 clojure.core
函数的规范,只有几个宏的规范 - 看这里:https://github.com/clojure/core.specs.alpha/blob/master/src/main/clojure/clojure/core/specs/alpha.clj#L53
请注意:
macros are always checked during macro expansion, you do not need to call instrument for macro specs
(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?)
但是,请注意这一点,因为如果处理不当,您可能会遇到棘手的问题。