4
統合テストを試行するGrails beforeDeleteイベントを使用してオブジェクトに対してGORMを削除します。問題はbeforeDeleteイベントが統合テストで焼成されていないことである。統合テストでGORMイベントが発生しない
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}"
}
のGrails 1.3.5
任意の提案ですか?
なぜ気にしますか?
私のテストが失敗する原因に:
org.springframework.dao.InvalidDataAccessApiUsageException:削除されたオブジェクトがカスケード(団体から削除されたオブジェクトを削除する)によって再保存されるであろう:[com.v.ChallengeMember#1]。 (削除されたオブジェクトを関連から削除する)
しかし、削除はbeforeDelete解雇されている。まあ