Prismatic/schemaを使用して関数を検証することについて、非常に簡単な質問があります。単一のキーを持つマップのスキーマがあります。その値は、Bar
スキーマを単一の引数として取り、何かを返す関数です (副作用に使用されます)。
(require '[schema.core :as s])
(def Bar {:baz s/Int})
(def Action :???)
(def Foo {:action Action})
問題は、どのように定義するAction
かです。私はこれを試しました:
(require '[schema.macros :as sm])
(def Action (sm/=> s/Any Bar))
これは有望に見えますが、検証に失敗することはできません:
(s/explain Action)
;=> (=> Any {:baz Int})
;; This should fail
(s/validate Foo {:action :anything-goes})
;=> {:action :anything-goes}
ここで何が間違っていますか?