Объекты домена @Mock при модульном тестировании в grails listOrderBy динамический поиск выдает исключение

Я пишу модульный тест для контроллера Grails. Вот фрагмент кода:

@TestFor(MyController)
@Mock([MyDomain])
class MyControllerTests {

    void testController() {
        ...
        ...
    }
}

Вот как выглядит объект домена:

class MyDomain {
    static constraints = {
        name(nullable: false)
        parent(nullable: true)
    }

    static belongsTo = Industry

    static hasMany = [children: Industry]

    Industry parent
    String name
}

Метод в контроллере, который я тестирую, вызывает этот динамический метод GORM:

MyDomain.listOrderByParent()

Тест терпит неудачу, когда выполнение достигает этой строки, и исключение не имеет для меня особого смысла, поскольку аннотация @Mock должна была добавить все динамические методы:

groovy.lang.GroovyRuntimeException: Cannot compare com.stuff.MyDomain with value 'com.stuff.MyDomain : 1' and com.stuff.MyDomain with value 'com.stuff.MyDomain : 4'
at org.grails.datastore.mapping.simple.query.SimpleMapQuery$_executeQuery_closure63_closure155.doCall(SimpleMapQuery.groovy:78)

Контроллер отлично работает при запуске приложения Grails. Любые идеи?


person DaHoopster    schedule 10.11.2012    source источник
comment
Не могли бы вы прикрепить реализацию метода тестирования?   -  person Andre Steingress    schedule 12.11.2012


Ответы (1)


Вы также можете смоделировать объект домена Industry:

@Mock([MyDomain, Industry])
person Yu Jiaao    schedule 08.02.2017