Как имитировать статический метод домена объект в Grails?

имеют объект домена 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 изначально включать достаточно информации.

10
задан haydenmuhl 1 November 2010 в 20:59
поделиться