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

欢迎!请查阅 关于 页面以了解更多关于其工作方式的信息。

+3
测试

我认为我多次做过类似的事情

(is (= some-map (try (func ...) (catch Exception e (ex-data e)))

不确定是否之前已有人提出,但是有没有人对此种形式的

(defmethod assert-expr 'thrown-with-data? [x form]

对异常的数据映射进行检查?

一个复杂的问题是字符串有进行部分匹配的方便工具:正则表达式。此时没有这种无处不在的匹配器,导致没有明显的输入。选项可以是接受映射并返回 true 或 false 的单个参数函数,类似于正则表达式。或者可能只是允许与某个值进行比较?或许是一个规范?

显然有大量的设计选择,不清楚这是否意味着将其留给单个用户,还是 clojure.test 中有空间或兴趣。

提供此功能的库的一个例子是 matcher-combinators
```
(deftest exception-matching
  (is (thrown-match? clojure.lang.ExceptionInfo
                     {:foo 1}
                     (throw (ex-info "Boom!" {:foo 1 :bar 2})))))
```

https://github.com/nubank/matcher-combinators#clojuretest

1 答案

+1

如果有什么有意义的,肯定会感兴趣。如果有人已经创建了类似的东西,并且有任何经验的话,会感兴趣。

...