beforeDelete イベントを使用して、オブジェクトで Grails GORM 削除を統合テストしようとしています。問題は、統合テストで beforeDelete イベントが発生しないことです。
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)
}
}
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}"
}
グレイルズ 1.3.5
助言がありますか?
なぜ私は気にするのですか?
私のテストは次の理由で失敗しています:
org.springframework.dao.InvalidDataAccessApiUsageException: 削除されたオブジェクトはカスケードによって再保存されます (関連付けから削除されたオブジェクトを削除します): [com.v.ChallengeMember#1]; ネストされた例外は org.hibernate.ObjectDeletedException です: 削除されたオブジェクトはカスケードによって再保存されます (関連付けから削除されたオブジェクトを削除します): [com.v.ChallengeMember#1]
ただし、 beforeDelete が起動されているため、削除はブラウザーから正常に機能します。