2015-02-13 1 views
1

В моем приложении Grails у меня есть набор тестов Geb, в которых я вызываю различные методы GORM для сохранения/получения данных. Это было прекрасно, до недавнего времени. Но теперь, когда я пытаюсь вызвать метод GORM из Геба теста, я получаю следующее сообщение об ошибке:, вызывающий методы GORM из тестов Geb

Method on class [com.example.MyDomainClass] was used outside of a Grails application. If running in the context of a test using the mocking API or bootstrap Grails correctly.

Я знаю о том, что при определенных обстоятельствах вы должны использовать remote control plugin использовать методы Горм в тестах Geb. Однако в моем случае я запускаю тесты через grails test-app functional, и у меня нет JVM-forking, настроенных в Config.groovy. Другими словами, тесты должны работать в одной JVM как тестируемое приложение, поэтому я должен использовать методы GORM без плагина удаленного управления.

Я использую Grails 2.3.11 и Geb 0.10.0.

+2

«с недавнего времени», как в вашем обновленном от 2.3.10? это, по крайней мере, для меня было вопросом, где я должен был добавить удаленный плагин. – cfrick

ответ

4

Вы действительно должны всегда использовать grails remote control plugin. Вы не должны зависеть от того, что ваши тесты и тестируемое приложение запускаются в одной JVM и что вы можете называть код Grails из своего теста. Этот подход будет работает только при определенных обстоятельствах при использовании пульта дистанционного управления для этого будет работать всегда.

Даже если ваши тесты и приложения запущены в одной JVM (как это, вероятно, все еще имеет место для вас), некоторые методы, например GORM, могут быть ограничены граалями, которые будут вызываться только из контекста запроса , потому что они нуждаются в этом контексте, чтобы иметь возможность работать правильно.