2010-03-31 81 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