为什么这个测试用例抛出异常“Node is not truthful”,即使它的大小是1?
package foo.bar
import grails.test.*
import org.codehaus.jackson.JsonFactory
import org.codehaus.jackson.JsonNode
import org.codehaus.jackson.map.ObjectMapper
import org.junit.Test
class MyTest{
@Test
void testJSonNode() {
ObjectMapper mapper = new ObjectMapper(new JsonFactory())
JsonNode node = mapper.readTree('{"foo":"bar"}')
assert node.size() == 1
assert node.iterator().hasNext() == true
if (!node) {
throw new Exception("Node is not truthful")
}
}
}
一些背景信息:
if (!node)
更改为if (node == null)
答案 0 :(得分:3)
JsonNode
似乎定义了asBoolean() method,因此Groovy会调用它来确定对象的Groovy-truth值,而不是使用常规!= null
测试。这种方法在1.9中声称是新的,这就是为什么1.6.5中的行为会有所不同。