当尝试手动连接 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