我想要创建一个我认为是松散的模式来验证Clojure映射的内容。
clj-schema示例使我相信,我只需要将:loose指定为def-map-schema的第一个参数。然而,这似乎行不通。
考虑以下测试(使用midje):
(def-map-schema loose-schema :loose [[:id] Number])
(fact (empty? (validation-errors loose-schema {:id 1})) => true) ; OK
(fact (empty? (validation-errors loose-schema {:id "string"})) => false) ; OK
(fact (empty? (validation-errors loose-schema {:id 1 :foo "bar"})) => true) ; NO!第三项测试产生:
“路径:foo未在架构中指定。”
如何使模式忽略无关的映射项?
发布于 2014-03-12 17:58:52
我把争论绕错了方向。
def-map-schema返回的模式实际上并不松散:
(loose-schema? loose-schema)
=> false而不是:
(def-map-schema loose-schema :loose [[:id] Number])正确的表格是:
(def-map-schema :loose loose-schema [[:id] Number])https://stackoverflow.com/questions/22359892
复制相似问题