gpt4 book ai didi

unit-testing - grails,具有指定 ID 的单元测试模拟域

转载 作者:行者123 更新时间:2023-12-04 06:40:35 26 4
gpt4 key购买 nike

我在我的域中使用分配的 ID

class Book {

Integer id
String name

static mapping = {
id generator: 'assigned'
}
}

所以要添加一本新书:
def book = new Book([name: "The Adventures of Huckleberry Finn"])
book.id = 123
book.save(flush: true)

一切正常,问题出在我的单元测试中

首先,我只能模拟 1 个域类,
其次,我不能在单元测试中使用 .save(),所以我唯一的选择(据我所知)是使用 mockDomain 如下:
mockDomain(Book, [ [id: 123, name: "The Adventures of Huckleberry Finn"] ])

但它不起作用,它可以在没有“id generator:'assigned'”的普通域中工作

有任何想法吗?
我读到我不会在集成测试中遇到这个问题,这只是单元测试中的一个问题
谢谢

最佳答案

您需要 bindable id 的约束如果您想使用(默认情况下 id 不是 bindable )它作为映射参数在单元测试中创建域对象。域类将有

static constraints = {
id bindable: true
}

忠告:
如果您使用 Grails > 2.x,请使用 @Mock模拟域类而不是 mockDomain .您可以找到关于 Unit Testing的详细信息在 Grails 文档中。

再上一层
使用 build-test-data 模拟域对象的插件。

关于unit-testing - grails,具有指定 ID 的单元测试模拟域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16532631/

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