这对我有用:
(is (thrown? AbstractMethodError (.fun obj 1) ))
但这会爆发
(is (not (thrown? AbstractMethodError (.fun obj 1) )))
出现以下错误:
java.lang.RuntimeException: Unable to resolve symbol: thrown? in this context
据推测"抛出?"在#34;内有一些特殊含义。当我把" not"放在" not"在路上。
那么如何测试抛出的断言的否定?
答案 0 :(得分:3)
你是对的,thrown?
是special assertion,必须出现在is
之后。如果你想测试没有抛出异常(换句话说,调用评估的东西),你可能想要做类似的事情:
(is (.fun obj 1))
虽然这有一个问题:如果结果为falsey(false,nil),它将失败。完全确定:
(let [r (.fun obj 1)]
(is (= r r)))
(这是一个重言式,只有在抛出异常时才会失败。)