在尝试手动连接 clojure.test 和 spec 以供 fdef'ed 函数使用时,我意识到 spec.test/check 对失败的测试返回一个包含 (link: :failure false) 的映射。我(几乎)确信它应该返回 true,因为 spec.test/abbrev-result 用 spec.test/check 的返回值作为参数,并测试 :failure 的值。我无法产生一个 spec.test/check 对失败的测试返回 (link: :failure true) 的案例。仅为了信息,对于通过测试它返回一个不包含 :failure 键的映射。
以下是 REPL 中的一个简单的重现案例
(defn foo-fn (link: x) "bar")
(s/fdef foo-fn
:args (s/cat :x any?)
:ret string?)
(stest/check `foo-fn) ;; => 无错误,打印正常小的映射,无 :failure 条目
(defn foo-fn (link: x) 1)
(stest/check `foo-fn) ;; => 完整错误映射,:failure 等于 false。:failure 显示在下面
(-> (stest/check `foo-fn) first :failure) ;; => false