Clojure 测试:测试断言的否定

2024-04-15

这对我有用:

(is  (thrown? AbstractMethodError (.fun obj 1) ))

但这却炸了

(is (not (thrown? AbstractMethodError (.fun obj 1) )))

出现以下错误:

java.lang.RuntimeException: Unable to resolve symbol: thrown? in this context

大概是“被扔了”? “是”里面有一些特殊的含义,当我把“不是”放在中间时,它就不可见了。

那么我如何测试像抛出这样的断言的否定呢?


你是对的,thrown? is a 特别断言 https://clojure.github.io/clojure/clojure.test-api.html必须出现在之后is。如果您想测试是否未引发异常(换句话说,调用计算结果),您可能需要执行以下操作:

(is (.fun obj 1))

尽管这有一个问题:如果结果为 false(false,nil),它就会失败。完全确定的是:

(let [r (.fun obj 1)]
  (is (= r r)))

(这是一个同义反复,只有抛出异常才会失败)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Clojure 测试:测试断言的否定 的相关文章

随机推荐