我想使用 clojure 规范来检查我的函数的输入(至少在开发期间)。到目前为止,我已经完成了以下工作:我已经定义了规范,并且在函数的开头我已经像这个例子中那样放置了断言:
(defn foo [bar]
(s/assert ::bar bar)
(do-something-with bar))
其中 s
是 clojure.spec.alpha
的别名。默认情况下,这些断言似乎被禁用(当使用 midje 运行单元测试时)。我可以通过将 (s/check-asserts true)
放入我的文件之一来启用它们。不过,我不确定此设置的范围是什么。我觉得将它简单地放入其中一个源文件中是不对的,尽管到目前为止它似乎对我有用。
在测试期间全局启用这些断言但在部署应用程序时禁用它们的推荐方法是什么?
最佳答案
还有系统属性 clojure.spec.check-asserts
,您可以将其设置为 true。这用于设置断言检查的初始值。
参见 https://clojure.org/guides/spec#_using_spec_for_validation
关于Clojure:如何在全局范围内启用规范断言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58524436/