测试默认值

时间:2015-06-12 16:43:39

标签: grails spock

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

现在,在它的时候,我想还应该测试一下默认值是否正确(如果有人篡改域对象,那就是安全检查的类型)。问题似乎是如果我模拟一个对象,它将存在,但默认值将不会被设置。有没有办法检查这个,或者我只是要谨慎(拼写'偏执狂')?

它应该是这样的:

class Event implements Taggable {

   ...
   Boolean publish
   ...

   static constraints = {
        ...
        publish nullable: true, 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
    }

这是因为DB没有参与(单元测试中没有环境可用)设置默认值吗?我只能在集成测试中这样做吗?

1 个答案:

答案 0 :(得分:1)

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