Невозможно выполнить модульный тест с функцией, которая имеет оператор createCriteria () - PullRequest
2 голосов
/ 22 марта 2011

Я хочу написать модульный тест (от JUnit) для проверки значения этой функции в Groovy:

    String getPeopleNamesById(int[] peopleIds) {
        List<String> names = People.createCriteria().list{
            projections { property("name") }
            'in' ("id", peopleIds)
        }
        return names ? names.join(", ") : "";
    }

Но модульный тест всегда завершается неудачно при чтении этого оператора: List names = People.createCriteria () .list {...} groovy.lang.MissingMethodException: Нет сигнатуры метода: People.createCriteria () применим для типов аргументов: () значения: [].Я думаю, это из-за вызова функций, которые выполняют некоторые соединения с БД и запросы?Не могли бы вы помочь мне написать этот тест?Большое вам спасибо!

1 Ответ

3 голосов
/ 22 марта 2011

Запросы критериев недоступны в модульных тестах и ​​не предоставляются mockDomain. Вы можете сами смоделировать свои критерии запросов, например, с помощью mockFor или сделайте свой тест интеграционным тестом, в котором у вас есть доступ к полной среде базы данных.

Вот пример того, как вы могли бы посмеяться над своим запросом:

mockFor(People).demand.static.createCriteria = { ->
    [list: { closure -> [ <some mock objects> ] } ]
}
...