@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])