我正在使用Geb为Grails应用程序编写一些功能测试。有没有办法从这些测试中访问Spring bean。我尝试了显而易见的事实:
import geb.junit4.GebReportingTest
class AuthenticatedUserTests extends GebReportingTest {
UserService userService
@Test
void shouldCreateNewIdea() {
// throws NullPointerException
userService.doSomething()
}
}
但它不起作用。一些可能相关的附加细节:
grails test-app functional:
运行测试,即没有-war
选项答案 0 :(得分:2)
运行功能测试时,正在运行的应用程序在完全独立的JVM中运行以进行测试,因此您不能简单地访问正在运行的应用程序的bean,因为它们不在同一个JVM中。这个问题有各种解决方案,你可以:
a)测试调用服务的控制器操作(即通过HTTP公开的内容)
b)如果服务只是填充数据,您可以使用fixtures插件为您填充该数据(http://grails.org/plugin/fixtures)或仅为TEST环境填充BootStrap中的数据
c)使用像remote-control
(http://grails.org/plugin/remote-control)之类的插件来执行一些在服务器上运行的代码,以执行您想要的操作