Короткий ответ на мой вопрос: почему вы хотите это сделать, это функциональный тест, и он может быть удален от запущенных приложений JVM.
Причина в том, что я хочу проверить этот доменобъекты были обновлены, когда веб-вещи происходят.Люк Дейли любезно указал, что вы можете сделать это, используя плагин Grail для дистанционного управления (https://github.com/alkemist/grails-remote-control), что довольно здорово.Вы устанавливаете плагин, затем идете
assert remote {
MyDomainOb.findByName('fred') != null
}
, и он отправляет это замыкание на сервер и возвращает результат, который вы можете проверить.Результат должен быть сериализуемым.
ОК, так что это один из способов - но удаленный плагин немного сложнее вернуть результаты для тестов, если у вас много сложных объектов, изменяющихся под капотом из-за доменной модели, котораянавязывается вам.Так как же do вы получаете тестовую сессию Hibernate, когда вы находитесь на той же JVM ??Например: -
Session currentSession
def setup() {
ApplicationContext context = (ApplicationContext) ServletContextHolder.getServletContext().getAttribute(GrailsApplicationAttributes.APPLICATION_CONTEXT);
SessionFactory sf = context.getBean('sessionFactory')
currentSession = sf.getCurrentSession()
}
Добавьте это в начало вашего GebSpec, и тогда вы сможете вызывать currentSession.clear () или currentSession.flush ()
Мне нужно было провести сеанс тестовобновите, так что currentsession.clear () был ответом.
Обратите внимание, что это не поможет вам, если тестируемая цель находится в отдельной виртуальной машине, поэтому вам придется использовать удаленный.