A SortedSet of Library objektumokat használó osztály viselkedését tesztelem (a normál osztály nem interfész, ezért behoztam a cglib-nodep-et). Tesztelnem kell az osztály viselkedését, ha a rendezett halmaz több objektumot tartalmaz. A Library objektumokat a következő módon gúnyolták:
Library library = Mock()
Library library2 = Mock()
Ezután létrehozok egy TreeSetet:
def libraries = [library, library2] as TreeSet
és hívja meg a tesztelési módszer alatt lévő rendszert:
sut.doStuff(libraries).
A teszt hibakeresése során azt látom, hogy a könyvtárak csak egy elemből álló SortedSet. Úgy tűnik, hogy ez annak az eredménye, ahogy Spock kezeli az egyenlőséget:
def "equality test"() {
expect:
library == library2
}
átmegy, amikor lefuttatom a tesztet. Megkerülhetem valahogy ezt a viselkedést?
EDIT: == ==-ra változtattam, mert nem tudok gépelni
compareTo
metódus meghívását. A delegálás megvalósítása bontja meg a kódot, és valószínűleg itt kell megoldást keresni. 29.08.2014Comparable
gúnyokat egyenlővé teszi, ha összehasonlíthatók egymással. A gúnyolt metódusok alapértelmezés szerint a0
értéket adják vissza, ha nincs másként megadva, így azt hiszem, alibrary.compareTo(library2) == 0
hívása. Ebben az összefüggésben az egyenlőségi teszt helyesen viselkedik. Vagy talán a Groovy objektumok viselkednek így? Nem igazán vagyok egy groovy srác. 29.08.2014compareTo
metódust, ami mindig visszatért0
:/ 29.08.2014