欢迎!有关如何工作的更多信息,请参阅关于页面。
我在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 ...)))是有问题的。
(is (not ...)
(is (> a b))
(not (> 1 2))
(is (not (> a b)))
(not (not true))
>
(is (f a ...))
(is (not (f a ...)))
不是内建的,但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的内容,其中创建了当前消息。
do-report