2010-03-31 106 views
0

我创建了一个域类Grails中这样的:具有Set属性的Grails单元测试域类 - 是否安全?

class MyObject { 
    static hasMany = [tags: String] 
    // Have to declare this here, as nullable constraint does not seem to be honoured 
    Set tags = new HashSet() 

    static constraints = { 
     tags(nullable: false) 
    } 
} 

编写单元测试,以检查大小和MyObject.tags财产的内容,我发现我必须做到以下几点:

assertLength(x, myObject.tags as Object[]) 
assertEquals(new HashSet([...]), myObject.tags) 

为了编写测试的语法更好,我采取了以下方法:

void assertEquals(List expected, Set actual) { 
    assertEquals(new HashSet(expected), actual) 
} 

void assertLength(int expected, Set set) { 
    assertLength(expected, set as Object[]) 
} 

我现在可以调用assertLength()和assertE quals()方法直接在Set的一个实例上,例如 assertLength(X,myObject.tags) 的assertEquals([...],myObject.tags)

我是新来的Groovy和Grails,所以不知道有多危险方法重载这样的。它安全吗?如果是这样,我对这些方法(或类似方法)尚不可用感到惊讶 - 请让我知道他们是否。


*我可以看到,如果人们不期待他们,这些方法如何也可能引入歧义。例如。 assertLength(1, set)总是流逝,不管什么 set

回答

0

问题中概述的方法似乎没有任何问题。

0

内容看起来不错我

Definitive Guide to Grails书(这诚然是2006年),它说,做到这一点的:

assertLength(1, myObject.tags as Object[]) 

,或者使用size()方法,如:

assertEquals(1, myObject.tags.size()) 
+0

好吧,这就是我正在做assertLength()方法中。我很想知道如果使用这样的方法会受到阻碍。 此外,任何想法在我的assertEquals()方法? – Armand 2010-04-06 09:21:02