Grails 测试默认值

Grails 测试默认值,grails,spock,Grails,Spock,我刚刚开始为Grails应用程序编写测试,我已经观看并阅读了这些测试,希望使用这些测试来检查约束是否设置正确 现在,在进行测试时,我认为还应该测试默认值是否正确(如果有人篡改了域对象,这有点像安全检查)。问题似乎是,如果我模拟一个对象,它将存在,但默认值尚未设置。有没有办法检查这个,或者我只是太谨慎了(拼写为“偏执狂”) 应该是这样的: class Event implements Taggable { ... Boolean publish ... static c

我刚刚开始为Grails应用程序编写测试,我已经观看并阅读了这些测试,希望使用这些测试来检查约束是否设置正确

现在,在进行测试时,我认为还应该测试默认值是否正确(如果有人篡改了域对象,这有点像安全检查)。问题似乎是,如果我模拟一个对象,它将存在,但默认值尚未设置。有没有办法检查这个,或者我只是太谨慎了(拼写为“偏执狂”)

应该是这样的:

class Event implements Taggable {

   ...
   Boolean publish
   ...

   static constraints = {
        ...
        publish nullable: true, defaultValue: true
        ...
    }
}


这是不是因为DB没有参与(单元测试中没有可用的环境)来设置默认值?我只能在集成测试中执行此操作吗?

您是正确的,您需要在集成测试中执行此操作,因为并非所有数据库组件都连接在单元测试中。

是否应在约束或映射中提供
defaultValue:true
@TestMixin(GrailsUnitTestMixin)
@TestFor(Event)
class EventSpec extends Specification{

    Event ev = new Event(start: new Date(), subProgram: new Subprogram(),venue: new Venue())

    def setup() {
        mockForConstraintsTests(Event)
    }

    def cleanup() {
    }

    void "publish ist default true"() {  // cannot be tested ???

        expect:
        ev.publish
    }