Essais de test d'intégration Grails Suppression de GORM sur un objet avec l'événement beforeDelete. Le problème est que l'événement beforeDelete n'est pas tiré dans les tests d'intégration:Les événements GORM ne tirent pas dans les tests d'intégration
class ChallengeMembershipTests extends GroovyTestCase {
void testQuitChallenge() {
VUser user = VUser.build()
assertNotNull("user should be saved", user.id)
UserChallenge challenge = UserChallenge.build(owner: user)
assertNotNull("challenge should be saved", challenge.id)
ChallengeMember member = ChallengeMember.build(challenge: challenge)
println "MEMBER: ${member}"
assertNotNull("member should be saved", member.id)
member.delete(flush:true)
}
}
Partie pertinente ChallengeMember:
def beforeDelete = {
log.info "begin deleting challenge member ${this}"
user.removeFromChallenge_memberships(this)
challenge?.removeFromParticipants(this)
team?.removeFromMembers(this)
log.info "deleting challenge member ${this}"
}
Grails 1.3.5
Toutes les suggestions?
Pourquoi est-ce que cela m'intéresse?
Mes tests échouent en raison de:
org.springframework.dao.InvalidDataAccessApiUsageException: objet supprimé sera à nouveau enregistré par cascade (supprimer objet supprimé des associations): [com.v.ChallengeMember # 1]; l'exception imbriquée est org.hibernate.ObjectDeletedException: l'objet supprimé sera réenregistré par cascade (supprimer l'objet supprimé des associations): [com.v.ChallengeMember # 1]
Mais, delete fonctionne correctement depuis un navigateur, car beforeDelete est en train d'être viré.