@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. Есть идеи?

1 ответ

Также вы можете издеваться над объектом домена Industry:

@Mock([MyDomain, Industry])
Другие вопросы по тегам