这对我有用:
(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(使用前将#替换为@)