从Geb测试中访问Spring bean

时间:2014-05-20 17:52:14

标签: grails selenium functional-testing geb

我正在使用Geb为Grails应用程序编写一些功能测试。有没有办法从这些测试中访问Spring bean。我尝试了显而易见的事实:

import geb.junit4.GebReportingTest

class AuthenticatedUserTests extends GebReportingTest {

    UserService userService

    @Test
    void shouldCreateNewIdea() {

        // throws NullPointerException
        userService.doSomething()
    }
}

但它不起作用。一些可能相关的附加细节:

  • 我正在使用Grails 2.3.7
  • 我已禁用分叉
  • 我正在使用grails test-app functional:运行测试,即没有-war选项

1 个答案:

答案 0 :(得分:2)

运行功能测试时,正在运行的应用程序在完全独立的JVM中运行以进行测试,因此您不能简单地访问正在运行的应用程序的bean,因为它们不在同一个JVM中。这个问题有各种解决方案,你可以:

a)测试调用服务的控制器操作(即通过HTTP公开的内容)

b)如果服务只是填充数据,您可以使用fixtures插件为您填充该数据(http://grails.org/plugin/fixtures)或仅为TEST环境填充BootStrap中的数据

c)使用像remote-controlhttp://grails.org/plugin/remote-control)之类的插件来执行一些在服务器上运行的代码,以执行您想要的操作