первый пост здесь и, надеюсь, актуален для многих людей.
Я работаю над написанием интеграционных тестов для домена, и в этом домене у меня есть запрос с использованием метода withCriteria()
.Я искал по всей сети и обнаружил, что многие из них дают вам подробные инструкции о том, как выполнить насмешку над критерием запроса, но ни одного о том, как точно его протестировать.
Я пытался смоделировать домен с помощьюmockDomain(domain,list)
и настройку домена для теста для использования в setUp()
, затем вызов критериев, и я ничего не получаю.Я сделал похожий findBy
здесь и получил результаты, но не совсем те, которые я искал.Я почти уверен, что это не только мой запрос, но критерии, которые я читал в нескольких местах, не работают в сервисном тестировании.До сих пор запрос работал для меня в приложении, но я хочу провести несколько тестов, к которым я смогу обратиться в случае изменения моей кодовой базы.
Я действительно сделал то, что многие предложили и вытащиликод для запроса и сделал его статическим методом в моем домене, чтобы я мог смоделировать его для тестов, которые его используют, но теперь я застрял в том, как на самом деле проверить эту часть.Нужно ли запускать приложение и просто выполнять функциональное тестирование с этой точки зрения, или есть какой-то способ, которым я мог бы сделать это в модульном / интеграционном тестировании Grails?Я опубликую свой запрос ниже.
static Attribute getDefinitionsUsingCriteria(List categoryNames, List types){
def definitions = Definition.withCriteria() {
and {
'in'('type', types)
if (categoryNames) {
categories {
'in'('name', categoryNames)
}
}
}
}
return definitions
}
Определения имеют строковый тип свойства и имеют категории свойств типа Set
, что каждый элемент в этом наборе имеет свойство String
name.
Я все еще довольно новичок в Grails и читаю много справочников, и я удивлен, что этого не хватает во всех книгах, которые я до сих пор читал.Я надеюсь, что это просто ошибка с моей стороны, и это легко проверить.Я ценю любую помощь, и спасибо за чтение этого длинного поста.
JR.