我创建了一个域类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
好吧,这就是我正在做assertLength()方法中。我很想知道如果使用这样的方法会受到阻碍。 此外,任何想法在我的assertEquals()方法? – Armand 2010-04-06 09:21:02