grails - 从Geb测试访问Spring bean

标签 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
  • 我已禁用 fork
  • 我正在使用grails test-app functional:运行测试,即没有-war选项
  • 最佳答案

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

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

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

    c)使用像remote-control(http://grails.org/plugin/remote-control)这样的插件来执行一些在服务器上运行的代码,以执行所需的操作

    关于grails - 从Geb测试访问Spring bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23766680/

    相关文章:

    grails - Groovy 元类,模拟具有 throws 子句的服务方法

    hibernate - Grails具有许多值为0的条件

    java - 我想使用 for 循环一张一张地打印存在于一个文件夹中的图像文本

    selenium - 如何确保保留TestNG.xml中指定的顺序?

    python - Selenium ( python ): can't switch to iframe (name is dynamically generated)

    go - 在端点上运行测试之前,无法在BeforeSuit中启动应用程序服务器

    mongodb - 如何在AppFog/CloudFoundry上使用MongoDB部署Grails?

    internet-explorer - RemoteWebDriver InternetExplorer navigate().to() 超时?

    ruby-on-rails - JSON Rails API 的功能测试

    grails - 自定义错误消息无法在带有grails的gorm中使用