имеют объект домена Grails, у которого есть настраиваемая статическая функция для получения данных из базы данных
class Foo {
/* member variables, mapping, constraints, etc. */
static findByCustomCriteria(someParameter, List listParameter) {
/* code to get stuff from the database... */
/*
Return value is a map
["one": "uno", "two": "due", "three": "tre"]
*/
}
}
Статическая функция findByCustomCriteria
использует createCriteria ()
для построения запроса, извлекающего данные из таблицы Foo , что означает, что mockDomain (Foo)
не работает должным образом при модульном тестировании. Что я пытаюсь сделать, чтобы обойти это, так это использовать один из общих методов издевательства, чтобы имитировать findByCustomCriteria
, но я не могу понять синтаксис правильно.
У меня есть контроллер BarController
, который я пытаюсь протестировать, и скрытый в вызове BarController.someFunction ()
, есть вызов Foo.findByCustomCriteria ()
. . 12167] Каким будет способ высмеять это?
Я пробовал использовать new MockFor ()
, mockFor ()
и metaClass
, но я не могу заставить его работать.
Edit:
Каждый раз, когда я пытался издеваться над этим, я пытался издеваться над этим вот так ...
Foo.metaClass.'static'.findByCustomCriteria = { someParam, anotherParam ->
["one": "uno", "two": "due", "three": "tre"]
}
Я думаю, что не делал ' t изначально включать достаточно информации.