gpt4 book ai didi

grails - 在 Geb 功能测试中使用服务 bean 和依赖注入(inject)

转载 作者:行者123 更新时间:2023-12-02 09:33:07 25 4
gpt4 key购买 nike

我想在 Geb 测试中使用服务来填充一些示例数据。示例数据庞大且复杂,我们已经编写了代码来为其他 Controller 和服务创建它。因此,简单的模拟是不可能的。如何在 Geb 测试中访问此服务?

假设我的服务的名称是 testDataService,看起来像这样......

class TestDataService {

def otherService

void importData() {
otherService.getData()
}
}

在 Geb 中类似下面的东西是理想的......

class testSpec extends GebReportingSpec {

@Shared def testDataService

def setupSpec() {
testDataService.importData()
}

def test1() {
...some test...
}
}

据我了解,这应该适用于正常的集成测试。由于它是一个功能测试,所以情况有很大不同,它返回 null。

我发现了很多关于 Grails 远程控制插件的建议,但我想知道如何在没有它的情况下做到这一点。

一些旁注...

服务类位于 src/groovy 内部。尽管我确信我正确连接了它,因为它在被其他服务调用时按预期工作。仅在功能测试中不起作用。

Grails 版本:2.4.5

吉布0.10.0

最佳答案

对于 Grails 2.4.5

def testDataService = Holders.applicationContext.getBean("testDataService")

所以我们的测试规范可能看起来像这样......

class testSpec extends GebReportingSpec {

@Shared def testDataService = Holders.applicationContext.getBean("testDataService")

def setupSpec() {
testDataService.importData()
}

def test1() {
...some test...
}
}

请注意,来自其他服务的所有注入(inject)依赖项都应该存在。

关于grails - 在 Geb 功能测试中使用服务 bean 和依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30736488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com