2024 年 Clojure 状态调查 中分享您的想法!

欢迎!请查看 关于 页面了解更多关于如何使用的信息。

+3 投票
测试

我如何使用这个功能来检查函数在给定的 spec 和 request 下是否有效?

2 个答案

+6 投票

定义一个辅助函数会有所帮助,例如:

(defn speccheck [fn-to-check options]
  (let [results (t/check [fn-to-check] options)]
    (if (some :failure results)
      (do
        (println "\nFailed specs:")
        (doseq [result results
               :when (:failure result)]
          (println (:sym result))
          (pprint (or (ex-data (:failure result))
                      (:failure result)))))
      true)))

(deftest my-fun-test
  (is (speccheck `this/is-my-fn {}))) ; pass options to t/check as needed

这有助于在失败的情况下打印失败信息。

谢谢,我打算试试。
0 投票

您还可以使用 expound 来报告

(defn is*
  [results]
  (assert (seq results))
  (test/is
   (if (some :failure results)
     (exp/explain-results results)
     true)))

用法

(is* (stest/check `ns/fn))

注意:如果没有针对该函数的规范,则 assert 将失败。

...