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

欢迎来到这里!请查看 关于页面 了解更多有关该网站如何运作的信息。

+1
测试
重新分类

我在 clojure.test 中的 is 出现问题。是否有 is-not 可用?如果我简单地测试 (is (not ...)),则失败信息不具说服力。如果 (is (> a b)) 失败,我会收到类似 (not (> 1 2)) 的消息,但当 (is (not (> a b))) 失败时,我只会收到 (not (not true)) 这样的消息。当然,对于 >,我可以选择一个更好的谓词进行测试,但总的来说,(is (f a ...))(is (not (f a ...))) 是有问题的。

1个答案

+1

不是内置功能,但 is 谓词是一个开放的可扩展系统(文档见 https://clojure.github.io/clojure/#clojure.test

(defmethod clojure.test/assert-expr 'not [form]
  ...)

基本而言,您需要确定如何根据真/假情况来使用 do-report 以获得所需的结果。这可能需要一些调整,但您可能需要查看 https://clojure.github.io/clojure/clojure.test-api.html#clojure.test/assert-predicate,这是创建当前信息的地方。

...