如何在功能测试中访问grailsApplication和ApplicationContext
我正在构建一个GrailsREST应用程序,并使用Spock编写了功能测试。 请注意,这些功能测试仅适用于REST服务如何在功能测试中访问grailsApplication和ApplicationContext,grails,functional-testing,spock,applicationcontext,grails-config,Grails,Functional Testing,Spock,Applicationcontext,Grails Config,我正在构建一个GrailsREST应用程序,并使用Spock编写了功能测试。 请注意,这些功能测试仅适用于REST服务 class LoginFunctionalSpec extends Specification { def setUp() { // here I want to access grailsApplication.config } } 我已经尝试过以下方法: 注入grailsApplication(通过定义为类级变量),但没有注入任何get 使用Applica
class LoginFunctionalSpec extends Specification {
def setUp() {
// here I want to access grailsApplication.config
}
}
我已经尝试过以下方法:
class LoginFunctionalSpec extends Specification {
def grailsApplication
def setUp() {
def port = grailsApplication.config.mongo.port //throws NPE
}
}
它抛出一个NPE,表示正在对null对象调用config属性。我认为您不需要显式地注入任何内容<默认情况下,代码>grailsApplication在测试中可用
class LoginFunctionalSpec extends Specification {
def setUp() {
grailsApplication.config.blah //should work
}
}
注-Spock不为功能测试提供直接支持。您需要使用进行适当的功能测试。您是在集成测试阶段还是在功能测试阶段运行测试
您需要从扩展到在集成测试阶段实现自动布线,但这里讨论的是功能测试。。。由于grails在与被测应用程序相同的JVM中运行您的测试,因此您实际上不需要使用远程控制,但我总是在功能测试中使用远程控制,因为它对我来说似乎更干净,而且如果您的测试和被测应用程序不在同一JVM中运行,它是一种非常强大的技术。我已更新了描述听你的建议。(我的情况下不需要Geb,自动注入也不起作用)@ssinghal我的意思是你不需要
def grailsApplication
。默认情况下,它可用于测试。@ssinghal您需要@TestFor
才能使用规范中默认的grailsApplication
。