В модульных тестах пока нет поддержки запросов HQL, но мы над этим работаем.Но вы не должны делать тесты на постоянство с издевательствами.Тесты на постоянство следует выполнять для базы данных в интеграционном тесте.
Я обычно перемещаю запросы HQL в класс домена как статические методы запросов.Таким образом, их легко смоделировать в модульном тесте контроллера, службы и т. Д., А затем я тестирую метод как часть теста интеграции классов домена.
Например, у меня будет
class User {
String username
String password
...
static List findAllUsersBlahBlah(String foo, boolean bar) {
executeQuery('from User u where ...')
}
}
Затем в модульном тесте я могу смоделировать этот метод с поддельными данными, поскольку меня не волнует постоянство в модульном тесте контроллера - я знаю, что он правильно протестирован в правильном месте, и я хочу сосредоточиться натестируемый класс, а не его сотрудники:
def users = [new User(...), new User(...)]
User.metaClass.static.findAllUsersBlahBlah = { String foo, boolean bar -> users }