gpt4 book ai didi

grails - 对访问域对象Grails的属性感到困惑

转载 作者:行者123 更新时间:2023-12-02 14:33:40 25 4
gpt4 key购买 nike

在学习Grails的过程中,我有几个 Realm 类。 “用户”和“发布”。这是每个中的重要片段:

//Post
static belongsTo = [user : User]

//User
static hasMany = [ posts : Post ]

使用这些子句,当删除用户时,帖子也应该是。

在我的集成测试中,我似乎无法正确访问这些帖子,并且不确定为什么。这是代码:
//From my integration tests...Not mocked.
def user = new User(userId: 'HenryTheThird', password:'thepassword').save()
...
def foundUser = User.get(user.id)
def postNames = user.posts.collect{ it.content }
assertEquals 2, postNames.size()

foundUser.delete()
assertFalse User.exists(foundUser.id)
assertNull (foundUser.posts.collect{ it.content})

最后一行给我一个断言错误。我猜这是因为当我声明foundUser时,它会带入所有帖子。我似乎已经用另一笔测试验证了这一点。我的问题是,如何断言数据库中的实际foundUser列表确实不再包含任何帖子?换句话说,我如何验证与该用户关联的帖子是否确实被删除?

最佳答案

您正在处理休眠刷新 session 与对象中的集合与数据库中的数据之间的断开连接之间的时间安排。更好的测试可能如下:

foundUser.delete()
assertFalse User.exists(foundUser.id)
def deletedUserPosts = Post.findAllByUser(foundUser)
assertTrue deletedUserPosts.size() == 0

您也可以测试帖子数
assertTrue Post.count() == <some expected value>
foundUser.delete()
assertFalse User.exists(foundUser.id)
assertTrue Post.count() == <some expected value>

关于grails - 对访问域对象Grails的属性感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19542625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com