grails – GORM事件未在集成测试中触发

grails – GORM事件未在集成测试中触发,第1张

概述尝试使用beforeDelete事件对对象进行集成测试Grails GORM删除.问题是在集成测试中没有触发beforeDelete事件: class ChallengeMembershipTests extends GroovyTestCase { void testQuitChallenge() { VUser user = VUser.build() ass 尝试使用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}"  }

Grails 1.3.5

有什么建议?

我为什么在意?

由于以下原因,我的测试失败了:

org.springframework.dao.InvalIDDataAccessAPIUsageException:已删除的对象将通过级联重新保存(从关联中删除已删除的对象):[com.v.ChallengeMember#1];嵌套异常是org.hibernate.ObjectDeletedException:已删除的对象将通过级联重新保存(从关联中删除已删除的对象):[com.v.ChallengeMember#1]

但是,删除在浏览器中工作正常,因为beforeDelete正在被触发.

解决方法 好吧,如果我在withNewSession中输入它会触发 –

ChallengeMember.withNewSession {   membership.delete(flush:true)}
总结

以上是内存溢出为你收集整理的grails – GORM事件未在集成测试中触发全部内容,希望文章能够帮你解决grails – GORM事件未在集成测试中触发所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1053685.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存