IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Grails Java Discussion :

Problème sur test d'intégration et custom validator


Sujet :

Grails Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 31
    Points
    31
    Par défaut Problème sur test d'intégration et custom validator
    bonjour,

    j'ai créé une classe A

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class A
    {
        B b
        static constraints = {
    		b validator : {value, obj ->
                         def seq = A.findAllByB(obj.b)
                         ....
        }
    }
    hors lors de l'appel à la méthode findAllByB(...) depuis un test d'intégration (création d'une nouvelle instance de A dans le test en question), je me retrouve avec une exception ArrayOutOfBoundException?? :
    | Failure: testMethod(xxxxIntegrationTests)
    | java.lang.ArrayIndexOutOfBoundsException: 0
    at org.grails.datastore.mapping.engine.event.AbstractPersistenceEventListener.onApplicationEvent(AbstractPersist
    enceEventListener.java:46)
    at org.grails.datastore.gorm.GormStaticApi.methodMissing(GormStaticApi.groovy:108)
    at B$__clinit__closure1_closure2.doCall(A.groovy:24)
    at xxxxIntegrationTests.FirstSave(xxxxIntegrationTests.groovy:41)


    pour autant que je sache, les méthodes dynamiques sont bien créées lors de tests d'intégration???

    j'utilise GRAILS 2.0.3 et Groovy 1.8.5

    Si quelqu'un a une idée je suis preneur.

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 218
    Points : 311
    Points
    311
    Par défaut
    Bonjour,
    Dans ton TI, tu as bien créé et sauvé l'instance du domaine B? la création de B ne serait-elle pas dans la même transaction que A?
    Quand tu fais println b.id tu as null ou un numéro avant ton test? si tu as null c'est que l'instance de B n'est pas correcte.
    l'instruction A.findAllByB(obj.b) reviens alors à dire A.findAllByB(null) ce qui n'est pas correct(utiliser IsNull).
    cdlt

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 31
    Points
    31
    Par défaut
    l'instance de A est bien sauvé dans le setup de ma classe de test d'intégration.
    le bug se passe dans le custom validator de ma classe A, lorsque je fais appel à la méthode findAllByB(obj.b), donc lors de la sauvegarde de mon instance de A dans le test.
    juste avant de faire le findAll, je log obj.b.id et il a une valeur non null.

    si dans mon custom validator, je passe par A.list() plutôt que findAllBy.. cela se passe bien. Par contre cela veut dire que je dois passer par toutes les instances de A pour faire mes vérifs (pour deux instances cela passe, pour 1 million.....)

    merci de ton aide.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 31
    Points
    31
    Par défaut [Résolu]
    J'ai résolu mon pb en utilisant dans ma classe de modèle la méthode beforeValidate() qui permet de faire de la validation multi champs et qui à priori permet l'appel aux "finders" dynamiques.

    cdlt

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/07/2015, 19h20
  2. Problème sur test connection
    Par codial dans le forum Connexion aux bases de données
    Réponses: 2
    Dernier message: 21/11/2006, 14h45
  3. Réponses: 12
    Dernier message: 18/07/2006, 17h36
  4. problème sur test if
    Par flo456 dans le forum ASP
    Réponses: 4
    Dernier message: 19/04/2006, 12h50
  5. Réponses: 4
    Dernier message: 16/06/2005, 15h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo