我正在构建一个Grails REST应用程序,并且我已经使用Spock编写了我的功能测试。 请注意,这些功能测试仅适用于REST服务。
class LoginFunctionalSpec extends Specification {
def setUp() {
// here I want to access grailsApplication.config
}
}
我已经尝试过以下方法:
但是他们都没有在我的功能测试中提供grailsApplication.config。
有没有办法实现这个目标?
@dmahapatro
我没有使用Geb,因为我正在测试REST服务,并且不需要浏览器自动化。
正如我在第1点中所说的那样,应用程序没有被自动注入。
class LoginFunctionalSpec extends Specification {
def grailsApplication
def setUp() {
def port = grailsApplication.config.mongo.port //throws NPE
}
}
它抛出一个NPE,说在null对象上调用了config属性。
答案 0 :(得分:3)
我认为你不需要明确注入任何东西。默认情况下,grailsApplication
在测试中可用。
class LoginFunctionalSpec extends Specification {
def setUp() {
grailsApplication.config.blah //should work
}
}
注 -
Spock不提供功能测试的直接支持。您需要使用Geb进行正确的功能测试。
答案 1 :(得分:1)
您是在集成测试阶段还是功能测试阶段运行测试?
你需要从IntegrationSpec扩展到在集成测试阶段进行自动装配,但是你在这里谈论功能测试...由于grails在与测试中的应用程序相同的JVM中运行测试真的需要使用RemoteControl,但我总是在我的功能测试中做,因为它对我来说似乎更清晰,如果测试中的测试和应用程序没有在同一个JVM中运行,那么这是一个非常强大的技术。