我想创建我认为称为松散架构的内容,以验证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]。"
如何让架构忽略无关的地图条目?
答案 0 :(得分:0)
我有错误的论据。
def-map-schema
返回的架构实际上并没有松动:
(loose-schema? loose-schema)
=> false
而不是:
(def-map-schema loose-schema :loose [[:id] Number])
正确的形式是:
(def-map-schema :loose loose-schema [[:id] Number])