2010-12-08 11 views
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解雇されている。まあ

答えて

1

、私はそれが

ChallengeMember.withNewSession { 
    membership.delete(flush:true) 
} 
をfires- withNewSessionにで折り返す場合
関連する問題