如何在Grails中进行测试时模拟忽略验证的域对象?

时间:2016-05-22 06:56:17

标签: grails grails-domain-class

我有一个域类,它属于另外两个带有多个验证的域类。

让我们说域类书属于作者。在测试Book域类时,我希望只需访问Author对象,而无需使用Author的所有复杂验证来创建它。这可能吗?

2 个答案:

答案 0 :(得分:1)

在保存Author的实例时,只需传递validate: false

Author authorInstance = new Author()
authorInstance.save(validate: false)

这将阻止在Grails级别进行验证,但不确定在写入数据库级别时这将如何表现。

答案 1 :(得分:0)

build-test-data plugin是解决此问题的绝佳解决方案,它允许您创建/保存域对象,仅为您关注的属性指定值。该插件将负责填写任何其他所需属性/对象的值。例如,如果一本书需要作者,标题和ISBN,但您的测试只关注书名,您可以简单地写一下

def book = Book.build(title: 'Great Expectations')

该插件将负责为ISBN和作者创建有效值,并将所有内容保存到数据库中。