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

欢迎!请参阅 关于 页面了解更多此网站的工作方式。

+3 投票
测试

我认为我做了几次数次类似的事情

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

不确定之前是否已经有人提出过这个问题,但是有没有兴趣以一种某种形式的

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

来检查异常的数据映射?

一个复杂之处在于,字符串有简单的方式进行部分匹配:正则表达式。映射没有这种无所不在的匹配器,导致没有明显的输入。选项可以是接收映射并返回真或假的单个参数函数,就像正则表达式一样。或者也许只允许比较一个值?或许是一个规范?

显然这里有很多设计选择,不知道这意味着将它们留给单个用户,还是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 投票

如果有任何有意义的事情,我一定会感兴趣。如果有经验的人已经创建过类似的东西,我会感兴趣的。

...