首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在集成测试中不触发GORM事件

在集成测试中不触发GORM事件
EN

Stack Overflow用户
提问于 2010-12-08 18:47:51
回答 1查看 721关注 0票数 5

尝试在具有beforeDelete事件的对象上集成测试Grails GORM delete。问题是在集成测试中没有触发beforeDelete事件:

代码语言:javascript
复制
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的相关部分:

代码语言:javascript
复制
  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:删除的对象将通过cascade重新保存(从关联中删除已删除的对象):com.v.ChallengeMember#1;嵌套异常为org.hibernate.ObjectDeletedException:已删除的对象将通过cascade重新保存(从关联中删除已删除的对象):com.v.ChallengeMember#1

但是,delete在浏览器中工作得很好,因为beforeDelete正在被触发。

EN

回答 1

Stack Overflow用户

发布于 2010-12-08 22:55:10

好吧,如果我把它包在withNewSession里它就会触发-

代码语言:javascript
复制
ChallengeMember.withNewSession {
   membership.delete(flush:true)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4386586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档