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]
  ...)

基本上,您需要确定如何处理true/false情况下的do-report以获得您喜欢的结果。这可能需要一点时间来调整,但您应该查看类似https://clojure.github.io/clojure/clojure.test-api.html#clojure.test/assert-predicate的内容,其中创建了当前消息。

...