1
Pourquoi ce scénario de test lance-t-il l'exception "Le noeud n'est pas véridique" même si sa taille est 1?groovy - pourquoi jackson ObjectNode n'est pas véridique?
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")
}
}
}
Quelques informations de fond:
- L'exception n'est pas levée si je change
if (!node)
àif (node == null)
- Je suppose que cela est un problème avec Groovy Truth noeud
- est une instance de org.codehaus.jackson.node.ObjectNode
- Cela avait l'habitude de travailler dans org.codehaus.jackson: jackson-mapper-asl: 1.6.5
- Je vois cette question dans org.codehaus.jackson: jackson-mappeur-asl: 1.9.11
- ObjectNode implémente Iterable
La page du wiki de vérité groovy ne mentionne pas asBoolean(). Existe-t-il d'autres méthodes/interfaces qui peuvent contribuer à une vérité groovy en dehors de celles mentionnées sur le wiki de la vérité groovy? –
@uklance depuis Groovy 1.7 tout est géré par 'asBoolean' - le GDK ajoute une méthode' asBoolean' à 'Object',' CharSequence', 'Iterator',' Collection', 'Map' et' Object [] 'qui implémente la logique décrite dans cette page wiki, mais n'importe quelle autre classe peut fournir la sienne. –
Merci @ ian-roberts. Ce fut un vrai gratte-tête pour moi –