我期望“explain-data”应包含相同的“via”条目,无论它是从调用s/explain-data返回还是如果它在断言失败期间传递给打印机。
重现
(s/check-asserts true)
(s/def :example/name string?)
(def !ed (atom nil))
(s/explain-data :example/name 1)
;; #:clojure.spec.alpha{:problems [{:path [], :pred clojure.core/string?, :val 1, :via [:example/name], :in []}], :spec :example/name, :value 1}
(try
(binding [s/*explain-out* (fn [ed]
(reset! !ed ed)
"captured")]
(s/assert :example/name 1))
(catch Exception e))
@!ed
;; #:clojure.spec.alpha{:problems [{:path [], :pred clojure.core/string?, :val 1, :via [], :in []}], :spec :example/name, :value 1, :failure :assertion-failed}
预期:两种情况下的“:via”条目都应相同
实际:在断言失败期间传递给打印机的explain-data中的“:via”条目为空。