gpt4 book ai didi

unit-testing - Grails mockDomain 保存不保存

转载 作者:行者123 更新时间:2023-12-04 05:11:53 26 4
gpt4 key购买 nike

我正在为一些简单的方法编写单元测试。我遇到的问题是“保存”对我的域对象不起作用,即使域应该被模拟。在域对象上调用验证时,它返回为真。我什至用 try/catch 包围了对象,以确保它没有抛出任何奇怪的错误,但事实并非如此。下面的代码用于调用和测试。

void test()
{
mockDomain(MyDomain)
Map map1= ["asdf":" "]
Map map2 = ["asdf":123]
InputObject input = new InputObject()
input.setForeignId("1") //not a constraint
input.setMap1(map1)
input.setMap2(map2 )
service.methodUnderTest(profile)
List list = MyDomain.getAll()
assertEquals 1, l.size() //FAILS
}

def persistPublishGuids(InputObject input)
{
try{
HashMap map1 = input.map1
for ( e in map1 )
{
String key= e.getKey()
String value = e.value
long size = input.map2.get(key)
MyDomain domain = new MyDomain (id:guid, field1:value, field2:input.foreignId, field3:size)
domain.save()
}
} catch(ex)
{
ex.printStackTrace()
}
}

最佳答案

我还建议在测试中保存域对象时将 flush 和 failOnError 标志设置为 true。 'flush:true' 确保立即保存对象。没有failOnError 验证错误将意味着对象没有被保存,这很容易被遗漏。

domainObject.save(flush:true, failOnError: true)

如果您不想为测试中的所有字段设置基本数据,也值得考虑将验证标志设置为 false
domainObject.save(validate: false)
Grails domain object save docs for full information

关于unit-testing - Grails mockDomain 保存不保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6958682/

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