2015-03-26 1 views
1

Actuellement en utilisant Grails 2.4.4domaine Grails mappedBy « none » ne fonctionne pas sur le test de l'unité

Je suis en train de sauver mes modèles sans les assumer relation bidirectionnelle. J'ai donc ajouté mappedBy [field:'none']. Mais ça ne marche pas sur un test unitaire. Cela fonctionne quand je cours l'application, mais quand j'exécute le test unitaire et enregistre les domaines, ils supposent toujours la relation bidirectionnelle.

Tenir compte par exemple (j'omis les contraintes pour la simplicité, tenez compte des champs nullables):

class User { 
    Organization organization 
    static mappedBy = [organization: 'none'] 
} 

class Organization { 
    User leader 
    static mappedBy = [leader: 'none'] 
} 

Chaque fois que je fais:

def user = new User().save() 
def organization = new Organization(leader: user).save() 
user.organization = organization 
user.save() 

def organization2 = new Organization(leader: user).save() 
// now user's organization becomes organization2 

Répondre

0

Ne pas utiliser les tests unitaires pour les tests de persistance.

L'implémentation de GORM utilisée dans les tests unitaires n'utilise pas de base de données, seulement un ConcurrentHashMap. La plupart des fonctionnalités GORM de base sont prises en charge, mais comme vous le voyez, il existe des lacunes. Pour tester correctement la persistance, utilisez des tests d'intégration, qui utilisent par défaut une base de données H2 en mémoire, mais il est facile de remplacer cela dans DataSource.groovy par un test MySQL/Postgres/etc. base de données si vous préférez.