将 属性 注入集成测试 Grails 3

Inject property into integration test Grails 3

如何将 applicaiton.yml 文件中的属性注入到 grails 3.0 中的集成测试中?

例如:我的 applicaiton.yml

中有这个 属性
----
testing:
    defaults:
        startUrl: 'http://localhost:8080/'
----

在我的 Integration Spock 测试中,我有以下代码:

class WebpageRolesTestSpec extends Specification {

    def grailsApplication
    String LOGIN_URL = grailsApplication.config.getProperty('testing.defaults.startUrl')

    void "test login screen prompt"() {
         expect:
         LOGIN_URL == 'http://localhost:8080/'
    }
}

我遇到的异常是:无法在空对象上获取 属性 'config'

您可以使用支架:

import grails.util.Holders
...
LOGIN_URL = Holders.config.testing.defaults.startUrl
...

下面的测试在 Grails 3.1.1 中对我有效,我想你需要一个干净的应用程序。

import grails.test.mixin.integration.Integration
import grails.transaction.*
import spock.lang.*

@Integration
@Rollback
class SampleSpec extends Specification {
    def grailsApplication

    void "test something"() {
        expect:"fix me"
            grailsApplication.config.getProperty('testing.defaults.startUrl') == 
                'http://localhost:8080/'
    }
}